首页 > 代码库 > 华为机试(4)
华为机试(4)
中级题
题目描述
输入10个数字,按各个位上的和从小到大排序,如果相同,则按数字从小到大排序。
输入描述 :10个正整数,保证都在int范围内,用空格隔开
输出描述 :10个数字,其从大到小的值,用空格隔开,最后一个数字后不加空格
输入样例 :11 3 2 4 5 9 8 7 10 6
输出样例 :10 2 11 3 4 5 6 7 8 9
解题思路:调用C++自带的sort函数,重新改写compare函数即可。
#include<string>#include<algorithm>#include<sstream>#include<iostream>#include<vector>using namespace std;bool cmp(string &s1,string &s2){ unsigned len1; len1 = s1.size(); unsigned len2 ; len2 = s2.size(); unsigned res1=0,res2=0; for(unsigned i = 0;i<len1;i++) { res1 += (s1[i]-‘0‘); } for(unsigned j=0;j<len2;j++) { res2 +=(s2[j]-‘0‘); } if(res1==res2) { istringstream is1(s1),is2(s2); unsigned d1,d2; is1>>d1; is2>>d2; return (d1<d2); } return (res1<res2); }void main(){ vector<string> ves(10,""); for(int i=0;i<10;i++) cin>>ves[i]; sort(ves.begin(),ves.end(),cmp); for(int i=0;i<10;i++) {
cout<<ves[i];
if(i!=9)
cout<<" ";
}
cout<<endl; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。