问题标题: 酷町堂:4864咋错了

0
0
已解决
吕忆航
吕忆航
高级光能
高级光能

题目链接: 酷町堂:4864

4864咋错了

错的代码:

#include <iostream>

using namespace std;

string o[3000];

string f(string a){

int cnt=0;

char x[10000];

for(int i=0;i<=a.size()-1;i++){

if(a[i]>='0'&&a[i]<='9'){

x[cnt]=a[i];

cnt++;

}

}

return x;

}

long long h(string a){

long long sum=0;

for(int i=0;i<=a.size()-1;i++){

sum+=a[i];

}

return sum;

}

bool cmp(string a,string b){

string x=f(a),y=f(b);

long long sumx=h(x),sumy=h(y);

if(sumx!=sumy){

return sumx>sumy;

}

if(x!=y){

return x<y;

}

return a<b;

}

int main(){

int n;

    cin>>n;

getline(cin,o[0]);

    for(int i=1;i<=n;i++){

        getline(cin,o[i]);

    }

    sort(o+1,o+n+1,cmp);

for(int i=1;i<=n;i++){

        cout<<o[i]<<endl;

    }

    return 0;

}


0
已采纳
王梓钧
王梓钧
高级守护
高级守护

给你函数:

string data(string s){ string c=""; for(int i=0;i<s.size();i++)if(s[i]>='0'&&s[i]<='9')c+=s[i]; return c; } int num(string s){ int sum=0; for(int i=0;i<s.size();i++)sum+=s[i]-'0'; return sum; } bool cmp(string x,string y){ if(num(data(x))!=num(data(y)))return num(data(x))>num(data(y)); if(data(x)!=data(y))return data(x)<data(y); return x<y; }

0
0
0
我要回答