本文主要是介绍删数问题 (贪心),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Description
输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序组成一个新的正整数。
编程对给定的n和s,寻找一种方案使得剩下的数字组成的新数最小。
输出新的正整数。(n不超过240位)
输入数据均不需判错。
Input
第一行输入 n
第二行输入 s
Output
最后剩下的最小数。
Sample Input 1
175438 4
Sample Output 1
13
#include<bits/stdc++.h>
using namespace std;void f(int n,string &a,int t){for(int i=n;i<t;i++)a[i]=a[i+1];}int main(){int n;string a;cin>>a>>n;int len=a.size(),t=0,s=0,ll=0;while(s<n){s++;t=1;for(int i=1;i<len;i++){if(a[i]<a[i-1]){f(i-1,a,len);break;} }len--;}if(t==0)len-=n;for(int i=0;i<len;i++){if(a[i]=='0'){if(ll==1||i==len-1)cout<<a[i];}else{ll=1;cout<<a[i];}}return 0;}
这篇关于删数问题 (贪心)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!