Posted on 2012-05-03 23:55 
hoshelly 阅读(535) 
评论(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;
 
 }