- 删数问题 输入一个高精度的正整数n(≤200位),去掉其中任意k个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与k,寻找一种方案,使得剩下的数字组成的新数最小。
例如: 输入: 178542 输出: 142
思路:每次遍历都删除极大值点;
#include<stdio.h>
int a[201];
int main()
{
int n=0,k;
char c;
a[0]=a[n+1]=0;
for(int i=1;i<=200;i++)
{
c=getchar();
if(c>='0'&&c<='9')
{
n++;
a[i]=c-'0';
}
else
break;
}
scanf("%d",&k);
while(k)
{
for(int i=1;i<=n;i++)
{
if(a[i-1]<a[i]&&a[i]>=a[i+1])
{
for(int j=i;j<=n;j++)
a[j]=a[j+1];
n--;
k--;
break;
}
}
}
for(int i=1;i<=n;i++)
printf("%d",a[i]);
return 0;
}