-通过键盘输入一个高精度的正整数n(n的有效位数<=240),去掉其中任意s个数字后,剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。
-输入:n,s
-输出:最后剩下的最小数
-输入示例:
178543
4
-输出示例:
13
思路:
使用贪心算法,从左到右依次遍历,找到第一次出现的a(k)>a(k+1)
依次删除所有的使a(k)>a(k+1)的所有的a(k)
但要保证,删除的个数不要超过s个 and 如果没有删到s个,数字就已经单调递增,那么直接跳出循环,取该数字的前n-s位即可。
#include <iostream>
#include <string>
using namespace std;
string min_num(string str,int s){
long len=str.size();
int ss=s;
//int tem=0;
while(s><