题目
键盘输入一个高精度的正整数N(不超过250位),去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的N和k,寻找一种方案使得剩下的数字组成的新数最小。
输入输出格式
输入格式
输入两行正整数。
第一行输入一个高精度的正整数n。
第二行输入一个正整数k,表示需要删除的数字个数。
输出格式
输出一个整数,最后剩下的最小数。
输入输出样例
输入样例
175438
4
输出样例
13
解析
首先,先举一个例子:1 7 5 4 3 8,删的个数:4
不难看出:第一次删的应该是7,第二次删的应该是5,第三次删的应该是4,第四次删的应该是8
那么,剩下的数就是13。
是如何得出规律的呢? 我们仔细观察一下这个例子:
第一次删的数为7,和5比较,发现7更大,第二次删的数为5,和4比较,发现5更大
第三次删的数为4,和3比较,发现4更大,第四次删的数为8,和最后一个数比较,发现8更大(如果没有最后一个数,就假设为0)
很明显,就是删去下坡数,也就是这个例子中的7(比5大)、5(比4大)、4(比3大)、8(比最后一个大(假设有,并为0))。
#include
#include
using namespace std;
string s;
int n,a[251],l,k;
int main(){
cin>>s>>n;//扫描进来字符串
l=s.size();
for(int i=0;ia[j+1]){//删去下坡数字
for(int k=j;k