问题标题: 酷町堂:3983拿错了

1
0
已解决
许致远
许致远
中级守护
中级守护
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string a[10010];
bool cmp(string a,string b){
    if(a.size()!=b.size())
        return a.size()<b.size();
    return a<b;
}
int main(){
    int n;
    cin>>n;
    getline(cin,a[0]);
    for(int i=1;i<=n;i++){
        getline(cin,a[i]);
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        cout<<a[i]<<endl;
    }
    return 0;
}

 


0
已采纳
张岳恒
张岳恒
资深光能
资深光能

不能直接用size,因为还有非字母的东西

应在建一函数,用来判断有多少字母

然后比较时调用此函数

张岳恒在2020-03-31 21:02:28追加了内容

再定义一个函数

循环遍历

判断是否为字母

是就计数器加加

return 计数器

cmp的第一个判断把a.size()和b.size()都换成判断函数(a)和判断函数(b)

0
0
我要回答