最小正整数
时间限制(普通/Java):3000MS/10000MS 运行内存限制:65536KByte
总提交:139 测试通过:34
总提交:139 测试通过:34
描述
输入一个正整数N(N不超过240位,此整数中没有‘0’数字),去掉其中任意S个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小。
输出最小新正整数。
输入
输入数据包括多组数据,每组数据占一行,每行两个正整数N和S。直到文件结束。
输出
输出去掉任意S位后剩下数字组成的最小的新正整数。
样例输入
175438 4
样例输出
13
一开始没看清以为就是简单排序之后再是输出。果断的wa了,任意S个数字后剩下的数字按原左右次序将组成一个新的正整数这句话说明了不能排序。
之后换了种思路,如果后面的数字比前面的数字小的话就进行覆盖,直到去掉了s个数字。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(char n,char m)
{
return n<m;
}
char a[1000];
int main()
{
int n;
while(scanf("%s",a)!=EOF)
{
scanf("%d",&n);
int i,j;
int len=strlen(a);
while(n)
{
i=0;
while(i<len&&a[i]<=a[i+1])
{
i++;
}
n--;
for(j=i;j<len;j++)
{
a[j]=a[j+1];
}
}
a[j]='\0';
len=strlen(a);
for(i=0;i<len;i++)
{
printf("%c",a[i]);
}
printf("\n");
}
return 0;
}