2013年11月19日

鸡蛋篮子与格子取数

摘要: 1.鸡蛋篮子 有N个鸡蛋和M个篮子,把鸡蛋放到M个篮子里,每个篮子都不能为空。另外,需要满足:任意一个小于N的正整数,都能由某几个篮子内蛋的数量相加的和得到。写出程序,使得输入一个(N,M),输出所有可能的分配情况。 思路: 1.规定篮子鸡蛋数量从小到大递增枚举。 basket[M]:M个篮子中的鸡蛋数量 current_sum:当前所有篮子鸡蛋的总和, basket_id:当前篮子的序号, current_num:将要放到当前篮子去的鸡蛋数量, 2.由题意:任意一个小于N的正整数,都能由某几个篮子内蛋的数量相加的和得到 对于这M个篮子中的鸡蛋数量,我们用数组basket[M... 阅读全文

posted @ 2013-11-19 17:00 依蓝jslee 阅读(397) 评论(0) 推荐(0) 编辑

贪心与回溯与DP

摘要: 一.贪心 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。 它采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题,通过每一步贪心选择,可得到问题的一个最优解,虽然每一步上都要保证能获得局部最优解,但由此产生的全局解有时不一定是最优的,所以贪婪法不要回溯。 贪婪算法是一种改进了的分级处理方法。其核心是根据题意选取一种量度标准... 阅读全文

posted @ 2013-11-19 11:13 依蓝jslee 阅读(1715) 评论(0) 推荐(0) 编辑

NP问题

摘要: 1.复杂度与规模 时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。 多项式级的复杂度:如O(1),O(log(n)),O(n^a)等——注意它的规模n出现在底数的位置! 非多项式级的复杂度:如:O(a^n)和O(n!)等。 一个问题的规模指的是输入的总位数,比如一个n个数的排序问题,输入规模就是n。注意,在某些时候,输入规模是要值得注意的,比如判定一个数n是否是一个质数这个问题,它的输入规模并不是n,而是log(n),因为一个... 阅读全文

posted @ 2013-11-19 09:17 依蓝jslee 阅读(828) 评论(0) 推荐(0) 编辑

导航