删数问题
Description
键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。
Input
输入有多组 每组包括原始数n,要去掉的数字数s;
Output
输出去掉s个数后最小的数
Sample
Input
178543 4
Output
13
1 #include<stdio.h> 2 int main() 3 { 4 char a[1000]; 5 int s,i; 6 while(~scanf("%s%d",a,&s))//多组输入 7 { 8 while(s--)//依次删除s个数,每次都把两个中大的删除 9 { 10 i = 0; 11 while(a[i]<=a[i+1])//两两比较,为了留下两个数中较小的放在开头,注意等号很重要,只有后面大才要删除 12 i++;//如果后一个小于前一个就把前面的删除 13 while(a[i]!='\0')//删除,并把后面的补上来 14 { 15 a[i] = a[i+1]; 16 i++; 17 } 18 } 19 i = 0; 20 while(a[i] == '0' && a[i]!='\0')//如果都是0的话,不是的话就算了 21 i++;//找到最后一个0 22 puts(a+i);//输出 23 } 24 return 0; 25 }

浙公网安备 33010602011771号