高级守护
3825 有趣的排序
题目描述 Description
小明最近学习了很多的排序算法。老师想检验一下他的水平,给他出了一道题目:现在有n个数字,需要将他们按照位数之和从大到小的顺序进行排列,如果位数之和相同的话,则在按照数值大小,从小到大排列。
输入描述 Input Description
第一行输入一个整数n(n<=20000),表示数据的个数。
第二行输入n个空格隔开的整数,数值不超过100,000,000。
输出描述 Output Description
输出一行,n个空格隔开排序后的数据
样例输入 Sample Input
5
321 132 456 345 567
样例输出 Sample Output
567 456 345 132 321
#include <iostream>
#include <algorithm>
using namespace std;
int a[20001],n;
bool cmp(int a,int b)
{
int s=0,r=0,x=a,y=b;
while (x)
{
s+=n%10;
x/=10;
}
while (y)
{
r+=n%10;
y/=10;
}
if (s!=r) return s<r;
else return a>b;
}
int main()
{
int n;
cin>>n;
for (int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n,cmp);
for (int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
中级光能
这都不会???
宣海宁在2019-07-30 18:01:53追加了内容
首先我们要两个函数(一个是排序规则的,另一个是求数位之和的),然后就是互相调用,就行啦~
—————————————————————————————————————————————————
插句题外话:
以你的实力,这都做不出来?
中级守护
水贴
水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴水贴