Posted on 2012-05-03 23:55
hoshelly 阅读(496)
评论(1) 编辑 收藏 引用 所属分类:
Programming
删数问题
时间限制:1000 ms | 内存限制:65535 KB
- 描述
给出一个N位正整数(首位不为0),去掉其中S个数字后剩下的数字按左右次序组成一个新的N-S位正整数(首位不能为0)。对给定的N和S,寻找一种删数规则使得剩下得数字组成的新数最小。
- 输入
第一行一个正整数T ,表示有T组测试数据。
对于每组测试数据:第一行两个正整数 n ,s (s< n <= 10, 000) (用空格隔开); 第二行为一个n 位正整数。
- 输出
对于每组测试数据输出一行:最小的新数。
- 样例输入
2 10 2 1234334789 11 3 90019008798
- 样例输出
12333478 19008798
#include<stdio.h>
#include<string.h>
int main()
{
int n,s,k,i,m;
char a[10000];
scanf("%d",&n);
while(n--)
{
i=0;
scanf("%d%d",&m,&s);
scanf("%s",a);
while(s>0)
{
while(i<strlen(a) && a[i]<=a[i+1] && a[i]!='0') i++;
for(k=i;k<strlen(a);k++)
{
a[k]=a[k+1];
}
s--;
}
printf("%s\n",a);
}
return 0;
}