大概思路就是从左到右遇到的“”山峰删掉,比如c[i]>c[i+1]那么将c[i]删了,然后再从头删起。这个题数据比较小,所以直接暴力。
它的升级版U83355,需要维护一个链表(数据太大),但我没有打代码,就是懒得打,不想调细节。
贴个暴力:
#include<bits/stdc++.h> char c[260]; int main(){ int len,i,j,s; scanf("%s%d",c,&s); len=strlen(c); while(s--){ for(i=0;i<=len-2;i++) if(c[i]>c[i+1]){ for(j=i;j<=len-2;j++) c[j]=c[j+1]; break; } len--; } i=0; while(i<=len-1&&c[i]=='0')i++; if(i==len)printf("0"); else for(j=i;j<=len-1;j++) printf("%c",c[j]); return 0; }