题目描述
万恶的小黑,布置了一道题给老大做:给你一个n位的数,现在要求 你随意删除m位后,任意改变顺序,输出其能够构成的最小有效整数(即不能有前导零,如果只含有0则输出0)。但是,这正赶上了老大的对象从故乡来看他,老 大怎么能丢失这种机会呢。所以他找你寻求帮助,帮他完成这个问题吧。
输入
输入包含T组数据。每组数据包含两行,第一行包含两个整数n和m,代表一个数的位数和要删除的位数个数;第二行为一个n位的整数;(0<=m<n<5000)
输出
每组数据输出一行,表示删除后能够构成的最小整数
样例输入
2
5 2
54321
5 4
42130
样例输出
123
0
参考代码
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int a,b,i,j;
scanf("%d %d",&a,&b);
char s[5005];
int c[5005];
scanf("%s",&s);
int num=strlen(s);
for (i=0;i<num;i++)
{
c[i]=s[i]-'0';
}
int v;
for (i=0;i<num;i++)
for (j=i+1;j<num;j++)
{
if(c[i]>c[j])
{
v=c[i];
c[i]=c[j];
c[j]=v;
}
}
if(c[num-1-b]==0)
printf("0n");
else
{
for(i=0;i<num-b;i++)
{
if(c[i]!=0)
{
printf("%d",c[i]);
break;
}
}
for(j=0;j<num-b;j++)
{
if(j==i)
continue;
else
printf("%d",c[j]);
}
printf("n");
}
}
return 0;
}
解析
暂无