贪心算法—删数问题
2013-06-28 17:24
148 查看
给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a 和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。
算法的原理应该是说从最高位开始,一次向低位搜索,一旦遇到前一位(高位)的数大于当前位,则删去前一位,直到删除k个数,如果到达末尾还没有删除k个,则说明现在这个数已经是从小到大排序了,则从最低位开始删除要求的位数。
算法的原理应该是说从最高位开始,一次向低位搜索,一旦遇到前一位(高位)的数大于当前位,则删去前一位,直到删除k个数,如果到达末尾还没有删除k个,则说明现在这个数已经是从小到大排序了,则从最低位开始删除要求的位数。
#include <stdio.h> #include <string.h> int main() { char a[20]; int k; printf("输入正整数:\n"); scanf("%s",a); printf("输入k值:\n"); scanf("%d",&k); int len = strlen(a); while(k--) { int i=0,j; while(i<len-1 && a[i]<=a[i+1]) { i++; } if(i==len-1)//表示字符串是递增的 { len--; while(k--) len--; break; } else { for(j=i;j<len-1;j++) a[j]=a[j+1]; len--; } } printf("最小值为:\n"); int l; for(l=0;l<len;l++) printf("%c",a[l]); printf("\n"); return 0; }
相关文章推荐
- 贪心算法解决找零钱问题
- java代码实现贪心算法删除数字问题
- 贪心算法——区间找点问题
- UOJ#9 浅谈在线仙人球嵌套动态网络路径剖分优化的分支定界贪心剪枝启发式迭代加深人工智能搜索决策算法解决问题
- 贪心算法--活动安排问题
- 贪心算法简介 -- 活动时间问题
- 贪心算法——会场安排问题
- 贪心算法求解 图的m着色问题
- 初入算法篇(贪心) 最多不相交区间问题HDU2037+FOJ1230
- 贪心算法之背包问题
- 贪心算法实例(五):小船过河问题
- 贪心算法解决活动选择问题
- 1.4买书问题之贪心算法和动态规划
- 贪心算法——删数问题(修改后)
- 算法初步—贪心—基本贪心问题详解
- 贪心算法 - 背包问题
- 贪心算法之区间图着色问题
- 贪心算法解决部分背包问题(C语言,ruby)
- 贪心算法----背包问题
- 贪心算法解决数列作为顶点度数构造无向图问题