码迷,mamicode.com
首页 > 其他好文 > 详细

华为机试(4)

时间:2014-07-02 22:20:25      阅读:255      评论:0      收藏:0      [点我收藏+]

标签: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; }

 

  

华为机试(4),布布扣,bubuko.com

华为机试(4)

标签:style   blog   color   os   for   c++   

原文地址:http://www.cnblogs.com/Xylophone/p/3818980.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!