不正常的排序求条

#include"bits/stdc++.h"
using namespace std;
int n;
string a[1000];
bool cmp(string a,string b){
  int c=a.size()-1;
  int d=b.size()-1;
  if(c==d){
    while(--c&&--d){
      if(a[c]<b[d]) return 0;
      else if(b[d]<a[c]) return 1;
    }
  }
  return c<=d;
}
int main(){
  scanf("%d",&n);
  for(int i=1;i<=n;++i) std::cin>>a[i];
  sort(a+1,a+n+1,cmp);
  for(int i=1;i<=n;++i) std::cout<<a[i]<<" ";
  return 0;
}

想模拟排序规则,结果怎么调样例都不过

cmp模拟有问题

怎么改?

image

可以考虑用while循环先求出 a 和 b 的长度和每位的位权进行比较

Thanks♪(・ω・)ノ谢谢