http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2072
/*
题目描述:
键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。
输入:
输入有多组 每组包括原始数n,要去掉的数字数s
输出:
输出去掉s个数后最小的数
示例输入
178543 4
示例输出
13
*/
思路:
每一步总是选择一个使剩下的数最小的数字删除,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字;否则删除第一个递减区间的首字符,这样删一位便形成了一个新的数字串。然后回到串首,按上述规则再删除下一个数字。
注意前导0的处理!!!比如10005 3 答案应该是0。2001 1答案应该是1。
#include <stdio.h>
#include <string.h>
int main()
{
char a[105];
int n,i,j,t,len;
while(scanf("%s %d",a,&n)!=EOF)
{
len=strlen(a);
t=n;
if(n>=len)
{
printf("0\n");
continue;
}
while(n>0)
{
i=0;
while