200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 轻院2218: 小明的数字游戏( 给你n个数字 把这n个数字拼接起来 最大能拼出的数

轻院2218: 小明的数字游戏( 给你n个数字 把这n个数字拼接起来 最大能拼出的数

时间:2021-07-18 21:04:51

相关推荐

轻院2218: 小明的数字游戏(  给你n个数字 把这n个数字拼接起来 最大能拼出的数

题目链接:http://acm./problem.php?id=2218

这题两个坑点,第一多位数数目较多,这个地方要注意排序的方法(这里还可以进行优化,但本弱不会,望大神指点指点),第二注意前导零。

解题方法就是两个字符串拼接经行比较大小,例如样例输入中的13和312,组合起来31213比13312大,所以把312放前面。这里用到了c++的string的知识,可以两个直接相加比较。这个比较简单。

#include<stdio.h>#include<string.h>#include<iostream> #include<algorithm>using namespace std;int main(){int t,n;string s[1020],str1;scanf("%d",&t);while(t--){long long count;string str2="";//字符串清空 scanf("%d",&n);for(int i=0;i<n;i++)cin>>s[i];for(int i=0;i<n;i++)//对字符串大小经行排序 for(int j=i+1;j<n;j++){if(s[i]+s[j]<s[j]+s[i]){str1=s[i];s[i]=s[j];s[j]=str1;}}int flag=0;for(int i=0;i<n;i++){count=atol(s[i].c_str());//字符转数字 if(count==0&&flag==0)continue;//除去前导零 if(count!=0) {printf("%lld",count);flag=1; }}if(flag==0) printf("0");//若前面全是0,则输出一个0cout<<endl; }return 0;}

各位大佬,望指点指点,人生第一篇博客,轻喷。

求优化方法!!!!!!!

谢各位大佬关照本弱!!!!!!

轻院2218: 小明的数字游戏( 给你n个数字 把这n个数字拼接起来 最大能拼出的数字是多少?)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。