贪心 删数问题
来源:互联网 发布:网络照片素材 编辑:程序博客网 时间:2024/04/30 23:30
给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a 和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。
算法的原理应该是说从最高位开始,一次向低位搜索,一旦遇到前一位(高位)的数大于当前位,则删去前一位,直到删除k个数,如果到达末尾还没有删除k个,则说明现在这个数已经是从小到大排序了,则从最低位开始删除要求的位数。
代码1:
#include <stdio.h>#include <algorithm>#include <cmath>#include <string>#include <string.h>#include <iostream>using namespace std;int main(){ string a; int n; while(cin >> a >> n) { int m=a.size(); for(int j=0; j<n; j++) { int flag=0; for(int i=0; i<m; i++) if(a[i]>a[i+1]) { a.erase(a.begin()+i); flag=1; break; } if(!flag) a.erase(a.end()-j,a.end()); } cout << a<< endl; } return 0;}
代码2:
#include <stdio.h>#include <algorithm>#include <cmath>#include <string>#include <string.h>#include <iostream>using namespace std;int main(){ char a[105]; int n; while(cin >> a >> n) { int m=strlen(a); while(n--) { int i=0; while(i<m-1&&a[i]<=a[i+1]) { i++; } if(i==m-1) { m--; while(n--) m--; break; } else { for(int j=i;j<m-1;j++) a[j]=a[j+1]; m--; } } for(int i=0;i<m;i++) printf("%c",a[i]); cout << endl; } return 0;}
0 0
- 【贪心】删数问题
- 【贪心】删数问题
- 贪心 删数问题
- 贪心,删数问题
- [贪心] 删数问题
- 删数问题 贪心
- [贪心]删数问题
- 贪心 -- 删数问题
- 【贪心】【RQNOJ】删数问题
- 贪心算法 - 删数问题
- 删数问题(贪心)
- 贪心算法-删数问题
- 删数问题(贪心)
- 贪心算法---删数问题
- 贪心算法,删数问题
- 继续贪心:删数问题
- 删数问题 贪心法
- 贪心算法 - 删数问题
- HDU 1702 ACboy needs your help again!(栈与队列的基本使用)
- 7 纹理映射
- 2014Dedecms标签新增中...
- dfs
- 文件操作(OJ数据生成)
- 贪心 删数问题
- HDU 1016 Prime Ring Problem(经典DFS )
- linux进程与线程的区别
- codeforces div2 round#230 D
- iOS安全攻防(十九):基于脚本实现动态库注入
- 这辈子
- 眺望
- pn结工作原理
- 你是我心里,最痴心的馨香百合!