标签:style blog color os for c++
中级题
题目描述
输入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; }
标签:style blog color os for c++
原文地址:http://www.cnblogs.com/Xylophone/p/3818980.html