【题目描述】
输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案使得剩下的数字组成的新数最小。
输出新的正整数。(n不超过240位)
输入数据均不需判错。
【输入】
n 和 s
【输出】
一个正整数,即最少需要的组数。
【输入样例】
175438
4【输出样例】
13
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define N 20
using namespace std;
int main()
{
int t;
char str[260];
int i,j;
cin>>str;
cin>>t;
int len=strlen(str);
while(t--)
{
for(i=0;i<=len-2;i++)
if(str[i]>str[i+1])
{
for(j=i;j<=len-2;j++)
str[j]=str[j+1];
break;
}
len--;
}
i=0;
while(i<=len-1&&str[i]=='0')
i++;
if(i==len)
cout<<"0"<<endl;
else
for(j=i;j<=len-1;j++)
cout<<str[j];
return 0;
}
信息学奥赛一本通T1321:贪心算法 删数问题 归属于 贪心算法,更多同类题解源程序见:贪心算法 和 删数问题
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!