正题
大意
一些文件名,有的有后缀,有的没有。
现在要求(先满足前者) 1. 没有后缀的排最后 2. 后缀字典序 3. 名字字典序解题思路
首先按后缀排序如果后缀一样就名字排序,然后两次枚举先搞定有后缀的在搞定没后缀的
代码
#include#include #include using namespace std;struct xjq{ char s[9],h[4]; int l,hl,nn,ans;}k[101];char s[20];int n,name;bool cmph(xjq x,xjq y)//排序{ bool f=x.hl==y.hl; for (int i=0;i<=min(x.hl,y.hl);i++) if(x.h[i]!=y.h[i]) f=false;//判断相等 if (!f) { int ls=min(x.hl,y.hl); for (int i=0;i<=ls;i++) if (x.h[i]!=y.h[i]) return x.h[i] =0) k[i].ans=++name;//标记名次 for (int i=1;i<=n;i++) { if (k[i].hl==-1) k[i].ans=++name;//标记名次 } sort(k+1,k+1+n,cmpn);//恢复状态 for (int i=1;i<=n;i++) printf("%d\n",k[i].ans);}