
算法基础
文章平均质量分 70
Reoger
这个作者很懒,什么都没留下…
展开
-
换零钱实现之贪心算法
贪心算法的基本思路:从问题的某一步初始化解出逐步逼近给定的目标,以尽可能快地求得更好的解。当达到算法中的某一步不能再继续前进时,就停止算法,给出近似解。下面就一个例子来说明贪心的实现过程:就以一个换零钱的例子吧,输入一个数字的面额,求出用100,50...等等面额怎么才能换成像对应的钱#includeusing namespace std;void tanxin(int a);原创 2016-03-17 21:28:16 · 3647 阅读 · 0 评论 -
利用回溯(试探)法生成彩票组合
常见的彩票号码都是由一些数字组成的,生成彩票的号码其实就是将所有的数字进行不同的组合。例如,假设有一种彩票,每注由7个1-29的数字组成,且这7个数字不能相同,编写程序生成所有的号码组合:#include#include#define num 7#define max 20using namespace std;int temp[max];int con[num];vo原创 2016-03-19 14:29:18 · 2046 阅读 · 0 评论 -
java控制线程的执行顺序
在java多线程,不免会遇到我们需要控制线程执行顺序的情况。比较经典的情况就是生产者+消费者模式,只有当生产者被执行了,消费者才能被执行,否则就就可能陷入死锁。 首先介绍简单的实现消费者模式的方法:消费者-生产者Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个原创 2017-03-25 21:23:52 · 2315 阅读 · 0 评论 -
求最大公共子序列的长度
求两个字符串的最大公共序列的长度,比较简单的思想就是利用动态规划的思想来实现。先直接贴代码://求两个字符串的最大公共子序列 int getMaxLength(string str1,string str2){ int len1 = str1.length(); int len2 = str2.length(); int dp[101][101]; for(int原创 2017-03-26 15:29:55 · 805 阅读 · 0 评论 -
跳石板
跳石板小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3……. 这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。 例如: N = 4,M = 24: 4->6->8原创 2017-08-29 11:33:11 · 429 阅读 · 0 评论