资深守护
题目链接: 酷町堂: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;
}
初级光能
整型 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],换行;
}
}
高级天翼
函数部分
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豆告诉主函数+函数