高级光能
题目链接: 酷町堂: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;
}
高级守护
给你函数:
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; }