输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案使得剩下的数字组成的新数最大。
输入格式:
输入两个数n(存储为字符串)和s。
输出格式:
输出最大数
输入样例:
175438 4
输出样例:
78
思路:
本题的数字需要用字符类型表示
每次删去升序数列的第一个可保证所得数最大(反之可求最小数)
代码:
#include<stdio.h>
int main()
{
char a[1000000];
scanf("%s",a);
int s;
scanf("%d",&s);
int c=0;
while(a[c]!='\0')
{
c++;
}
int i,j,k;
for(i=0; i<s; i++)
{
for(j=0; j<c-1; j++)
{
if(a[j]<a[j+1])
{
for(k=j; k<c-1; k++)
{
a[k]=a[k+1];
}
break;
}
}
c--;
}
for(i=0; i<c; i++)
{
printf("%c",a[i]);
}
return 0;
}