问题标题: 酷町堂:4864

0
0
已解决
胡景轩
胡景轩
资深守护
资深守护

题目链接: 酷町堂:4864

#include<iostream>

#include<cstdio>

#include<cmath>

#include<string>

#include<algorithm>

using namespace std;

int n,sum;

string s[1005],ppt="";

int f(string p){

    int sum=0;

    for(int i=0;i<p.size();i++){

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

            sum+=(int)(p[i]-48);

        }

    }

    return sum;

}

string d(string s){

    for(int i=0;i<s.size();i++){

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

            ppt+=s[i];

        }

    }

    return ppt;

}

bool cmp(string x,string y){

    if(f(x)!=f(y)){

        return f(x)>f(y);

    }else if(d(x)!=d(y)){

        return d(x)<d(y);

    }

    return x<y;

}

int main(){

    cin>>n;

getline(cin,s[0]);

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

        getline(cin,s[i]);

        d(s[i]);

    }

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

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

        cout<<s[i]<<endl;

    }

return 0;

}


0
已采纳
宋灏
宋灏
初级光能
初级光能
整型 n;
字符串型 a[1005];
整型 x(字符串型 s){
    整型 sum等于0;
    循环(遍历0到s.size()-1){
        如果(s[i]大于等于'0'且s[i]小于等于'9'){
            sum加等s[i]减'0';
        }
    }
    返回 sum;
} 
字符串型 news(字符串型 s){
    string t="";
    for(遍历0到s.size()-1){
        如果(s[i]大于等于'0'&&s[i]小于等于'9'){
            t加等s[i];
        }
    }
    返回 t;
} 
布尔型 cmp(字符串型 a,字符串型 b){
    如果(x(a)不等于x(b)){
        返回 x(a)大于x(b);
    }
    if(news(a)!=news(b)){
        返回 news(a)小于news(b);
    }
    返回 a小于b;
}
主函数{
    输入n;
    getline(cin,a[0]);//吃换行
    循环(遍历1到n){
        输入整行a[i]
    }
    sort排序(a+1,a+1+n,cmp);
    循环(遍历1到n){
        输出a[i],换行;
    }
}

 

0
崔子周
崔子周
高级天翼
高级天翼

函数部分

string tq(string s){

string z;

for(int i=0;i<s.size();i++){

if(s[i]>='0'&&s[i]<='9') z=z+s[i];

}

return z;

}

int sz(string z){

int sum=0;

for(int i=0;i<z.size();i++){

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

sum+=z[i]-'0';

}

return sum;

}

bool cmp(string x,string y){

if(sz(x)!=sz(y)) return sz(x)>sz(y);

else if(tq(x)!=tq(y)) return tq(x)<tq(y);

return x<y;

}

给100豆告诉主函数+函数

我要回答