本文主要是介绍六学家的困惑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
六学家的困惑
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
小六喜欢两全其美的事情,今天就正好有一个这样的机会。
小六面前有两根管子,管子里面放满了数字为1到9的小球。每次取球时,小六会先选择一根管子,再从这根管子的某一侧(左侧或右侧)取出一个球。在满足取球规则的情况下,他可以任意顺序取出所有小球。假如小六依次取出的球的编号为a1,a2,⋯,ana1,a2,⋯,an,则他最后就得到了一个形如¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯a1a2⋯ana1a2⋯an¯样的十进制数。
小六希望他的取球顺序所组成的数是最大的,你可以帮一下他吗?
输入描述:
第一行输入数据组数。T (T≤14)T (T≤14)接下来T行,每行输入两串只含1∼91∼9的数字,表示两根管子里的小球的数字。每根管子内至少含1个小球,且数量不超过40个。
输出描述:
对每一组数据,输出一行Case #x: A,其中x是数据组数编号(从1开始),A是小六能组成的最大的数。
示例1
输入
复制
2
123456 123456
9876346789 9854894589
输出
复制
Case #1: 665544332211
Case #2: 99998888776655498443
这个题目是一个字符串的题目 他让我感受到了STL的魅力
我也发现我有很多的字符串函数完全不知道
比如reverse(a.begin(),a.end()); 这个函数代表了字符串反转函数
#include<bits/stdc++.h>
using namespace std;
int main()
{string a; cin>>a;reverse(a.begin(),a.end());cout<<a<<endl;return 0;
}
结果如下:第一行输入 第二行输出
还有 a.erase(x,y) 代表从x开始删 删掉y个字符
erase(first,last); 删除从first到last之间的字符 如erase(a.begin()+5,a.end()-7);删除开头第5个到结尾倒数第7个。
swap(a,b) 交换函数 把a b 的值都交换
AC代码:
#include<bits/stdc++.h>
using namespace std;
int t;
string a,b,temp;
int main()
{cin>>t;while(t--){cin>>a>>b;while(a.length()||b.length()){temp=a;reverse(a.begin(),a.end());//反转函数 a=max(a,temp);//相当于a的第一个字符是俩端最大的一个 temp=b;reverse(b.begin(),b.end());//反转函数 b=max(b,temp);//同上 if(a<b)swap(a,b);//交换ab 让a的第一个字符是四个字符中最大的 cout<<a[0];//一个个输出 a.erase(0,1);//一个个删除 }cout<<endl;}return 0;
}
这篇关于六学家的困惑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!