Luogu 1106_c++

 

 大概思路就是从左到右遇到的“”山峰删掉,比如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;
}