首页 > 代码库 > (贪心)删数问题

(贪心)删数问题

【题目】

过键盘输入一个高精度的正整数n(n的有效位数≤240),去掉其中任意s个数字后,剩下的数字按

原左右次序将组成一个新的正整数。编程对给定的n 和s,寻找一种方案,使得剩下的数字组成的新数最小。

输入:n

s

输出:最后剩下的最小数

【样例输入】

178543

S=4

【样例输出】

13

#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<algorithm>#include<cstdlib>using namespace std;char s[100010];int k,len;void work(){   int temp=k;   while(temp--)   {      int i=0;      while(i<len-1&&s[i]<=s[i+1]) i++;      for(int j=i+1;j<len;j++)            s[j-1]=s[j];   }}int main(){      cin>>s>>k;      len=strlen(s);      work();      for(int i=0;i<len-k;i++)            printf("%c",s[i]);}

  

(贪心)删数问题