//先看第一组://1 5 1 9//小大 小 大//留删 留 留//
第二组://1 4 1 5 1 9//小 大 小 大 小 大//留 删 留删 留 留
//删掉的是“山峰”,也就是比后一个数大的数,且越靠前“山峰”越早删。
//大体思路也就一句话:删除靠前的“山峰”。
//另外,有几个坑不得不提://1.注意删除前导0(虽然它说每个数位都不为0,但是测试数据里面好像有这样的数据)。//2.删过一个数记得长度len--。//3.有多组数据(其实数组可以不清零,因为有len控制查找范围)。//4.当把数删为0(见数据4)时,要输出0。
1:删掉的是“山峰”,也就是比后一个数大的数,且越靠前“山峰”越早删。
2:注意删除前导0
#include <stdio.h>
#include <string.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--;//此处位置写错,之前写在if内部
}
i=0;
while(i<=len-1&&c[i]=='0')i++;//处理前导0
if(i==len)printf("0");
else
for(j=i;j<=len-1;j++)
printf("%c",c[j]);
return 0;
}
over~