【贪心】删数问题

来源:互联网 发布:软件人员外派 编辑:程序博客网 时间:2024/04/27 01:08

【问题描述】

给定n位整数q,去掉其中任意k<=n个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。

比如,178543删除四个数字后,最小的新数是13。

贪心策略:最近下降点优先。

#include <iostream>#include <vector>#include <string>using namespace std;void delek(vector<int> &s, int k){int n=s.size();if(k>=n);else{while(k>0){    for(vector<int>::iterator it=s.begin(); it<s.end()-1 && *(it)<*(it+1); it++) ;    s.erase(it);k--;}}}void main(){vector<int> s;s.push_back(1);s.push_back(7);s.push_back(8);s.push_back(5);s.push_back(4);s.push_back(3);delek(s, 4);for(vector<int>::iterator it=s.begin(); it!=s.end(); it++)cout<<*it;cout<<endl;}