0
已解决
张天璨
新手天翼
新手天翼
#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
string a[20010];
int sum(string a){
int s=0;
for(int i=0;i<a.size();i++){
s+=a[i]-'0';
}
return s;
}
bool cmp(string a,string b){
if(sum(a)!=sum(b)) return sum(a)>sum(b);
return a<b;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
我用这个代码提交,结果金色传说30分。
大家来找错!
张天璨在2020-07-21 09:49:17追加了内容
1
已采纳
王子凡
高级光能
高级光能
sum函数写错了
我是拿结构体写的
struct node{
int s,num;
}a[20010];
我在结构体里定义了一个s,记录数位和
for (int i=1;i<=n;i++)
{
int t=a[i].num;
cnt=0;
while (t!=0)
{
int num=t%10;
t/=10;
cnt+=num;
}
a[i].s=cnt;
}
然后cmp这样写就可以了
bool cmp(node a,node b)
{
if (a.s!=b.s)
return a.s>b.s;
return a.num<b.num;
}
1
尤博扬
初级光能
初级光能
@张天璨
- int cnt=0;
- while(a>0)
- {
- cnt=cnt+a%10;
- a/=10;
- }
- return cnt;
- 应是这样
- 还有:所用变量都是int类型
- 改一下
尤博扬在2020-07-22 10:13:15追加了内容
望采纳
0