bzoj1258: [CQOI2007]三角形tri

    xiaoxiao2021-04-12  49

    传送门 大力照一发规律。 以4结尾删4 以其他数结尾删到末位于当前数相同,加上4就可以了。

    #include<cmath> #include<cstdio> #include<cstring> #include<iostream> using namespace std; char s[105],a[4][105],ch; int l,x,fl,u,v,l1,l2; void get(int p,int l){ if (!l) return; if (s[l]=='4'){ x++; for (int i=0;i<l;i++) a[x][i]=s[i]; a[x][l]=p+'0'; return; } if (s[l]-'0'==p){ x++; for (int i=0;i<l;i++) a[x][i]=s[i]; a[x][l]='4'; return; } get(p,l-1); } int main(){ scanf("%s",&s); x=0; l=strlen(s)-1; get(1,l); get(2,l); get(3,l); for (int i=1;i<=x;i++) for (int j=i+1;j<=x;j++){ l1=strlen(a[i]); l2=strlen(a[j]); u=v=0; fl=0; for (;u<l1&&v<l2;u++,v++){ if (a[i][u]>a[j][v]){fl=1; break;} if (a[i][u]<a[j][v]){fl=0; break;} } if (fl){ u=0; for(;u<l1||u<l2;u++){ ch=a[i][u]; a[i][u]=a[j][u]; a[j][u]=ch; } } } for (int i=1;i<=x;i++) printf("%s\n",a[i]); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-667355.html

    最新回复(0)