删数 贪心

来源:互联网 发布:工业网络交换机厂家 编辑:程序博客网 时间:2024/06/08 18:51

删数

时间限制(普通/Java):1000MS/2000MS          运行内存限制:65536KByte
总提交:80            测试通过:3

描述

    键盘输入一个正整数n(>=2位,<=100位),去掉其中的任意s(s < n的位数)个数字后使剩下的数字按照原来的次序组成一个新的正整数,编程对于给定的n和s,寻找一种方案,使得组成的新的正整数最小。

输入

输入有多组数据,每组数据包括原来的正整数n和删掉的位数s

输出

输出题目要求的最小正整数,要求输出前导零。

样例输入

16234 3

样例输出

12



考虑只删一个数的情况,最优解是删除出现的第一个左边>右边的数,因为删除之后高位减小,很容易想...那全局最优解也就是这个了,因为删除S个数字就相当于执行了S次删除一个数,因为留下的数总是当前最优解...贪心吧


#include<iostream>#include<cstring>#include<string>using namespace std; int main() { string a; int c; while(cin>>a>>c) { a=a+char('0'-1); while(c--) { for(int i=0;i<=a.size()-2;++i)if(a[i]>a[i+1]){a.erase(a.begin()+i);break;} } a.erase(a.end()-1);   //删除 cout<<a<<endl; } return 0; }



0 0
原创粉丝点击