Posted on 2012-05-03 23:55
hoshelly 閱讀(512)
評論(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;
}