75分求助,wa了两个点
查看原帖
75分求助,wa了两个点
788115
chocococoooo楼主2024/7/13 15:08

求助各位佬,下面这个方法只WA了第一个点和subtask的最后一个点,实在找不出来问题了,谢谢佬们!

#include <iostream>
#include <algorithm>
using namespace std;

const int N = 30;

string a[N];

bool cmp(string a,string b){
    int min_len=min(a.size(),b.size());
    for(int i=0;i<min_len;i++){
        int a_digit=a[i]-'0';
        int b_digit=b[i]-'0';
        if(a_digit>b_digit) {
            return true;
        }
        else if(a_digit<b_digit){
            return false;
        }else{
            continue;
        }
    }
    //这里是关键
    if(a.size()>min_len){
        return cmp(a.substr(min_len+1),b);
    }
    if(b.size()>min_len){
        return cmp(a,b.substr(min_len+1));
    }
    return true;
}

int main(){
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        string temp;
        cin >> temp;
        a[i]=temp;
    }
    sort(a,a+n,cmp);
    for(int i=0;i<n;i++){
        cout << a[i];
    }
    return 0;
}
2024/7/13 15:08
加载中...