目录
Love is worth years.❤热爱可抵岁月漫长。
前言
删数!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
题目介绍
输入样例:
178543 4
输出样例:
13
在开始之前大家可以先自己写一下看一下能不能自己写出来~注意输出的格式哦!
分析
贪心策略,找到后一个数大于前一个数的那个数然后!把他删除掉,就可以实现剩下的数最小!
理论存在,实践开始!
代码:
#include <stdio.h>
#include <string.h>
int main()
{
int s,w,i;
char a[101];
scanf("%s%d",a,&s);
while (s)//如果s==0那么直接输出就好了!
{
w=strlen(a);
i=0;
while(i<w&&a[i]<=a[i+1])//遍历每一个数
{
i++;
}
//找到a[i]>a[i+1]的那个数
while (i<w)
{
a[i]=a[i+1];//数组前移顺便删除a[i]
i++;
}
s--;//删除了一个数直到不用删除
}
int j=0;
while (a[0] =='0')//如果第一位数为0;
{
while (j<w)
{
a[j]=a[j+1];//数组前移
j++;
}
j=0;//把j还原为第一个以便下次循环使用
}
if(a[0]==0)//这个时候如果a[0]还==0那么就只有0了
printf("0\n");
else
printf("%s\n",a);
return 0;
}
注意事项:
1.我觉得吧
这个while用的就特别精髓。
2.要考虑第一个数等于0的情况,如果第一个数等于0,那么就去掉它。
3.要考虑a[0]==0的情况不然就输出不了了
ok总结完毕