码迷,mamicode.com
首页 >  
搜索关键字:求解    ( 7301个结果
递归案例
一般定义程序调用自身的编程技巧称为递归( recursion)。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力...
分类:其他好文   时间:2014-05-24 02:05:43    阅读次数:400
uva 548 Tree
uva 548 Tree 题目大意: 给定一个二叉树的中序和后序遍历,求二叉树到每个叶节点的路径和最小的那个叶节点的值。 解题思路: 先建树,后dfs,建树也就是后序的最后一个就是二叉树的当前节点的值,再在中序中找到这个值,那么左边就是左子树,右边就是又子树,再从后序中找出相应的左右子树的后序,然后划分为子问题递归求解。...
分类:其他好文   时间:2014-05-23 08:10:59    阅读次数:255
筛法求素数
素数表在算法中经常会用到,所以掌握一种高效求解素数表的算法是很有必要的。 这里介绍一种算法:筛法。筛法的时间复杂度我不太清楚,但我知道是接近于 O(n) 的,比一般的求解素数的算法效率要高很多,其基本思想如下: 1、要得到 2 — n 之间的所有素数,先记录下 2 — n 之间的所有整数,用集合表示 A = { 2 , 3 , 4 , 5 , 6 …… n } 2、创建一张素数表 P...
分类:其他好文   时间:2014-05-22 12:21:52    阅读次数:201
混合三种背包问题(背包九讲)
问题:     如果将P01、P02、P03混合起来。也就是说,有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。应该怎么求解呢? 01背包与完全背包的混合:     考虑到在P01和P02中给出的伪代码只有一处不同,故如果只有两类物品:一类物品只能取一次,另一类物品可以取无限次,那么只需在对每个物品应用转移方程时,根据物品的类别...
分类:其他好文   时间:2014-05-22 11:24:26    阅读次数:205
计算4000000000以内最大的f(n)=n的值---字符串问题python实现(五)
问题:写一个函数,计算4 000 000 000 以内的最大的那个f(n)=n的值,函数f的功能是统计所有0到n之间所有含有数字1的数字和。比如:f(13)= 6,因为“1”在“1,2,3,4,5,6,7,8,9,10,11,12,13”中的总数是6(1,10,11,12,13)。传统枚举方法效率低、求解时间长,本文介绍如何采样剪枝操作提高算法效率、降低求解时间。...
分类:编程语言   时间:2014-05-22 09:10:59    阅读次数:336
01背包问题(空间优化)经典代码
题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方...
分类:其他好文   时间:2014-05-22 02:23:02    阅读次数:435
杭电1085(多重背包求解)
题目:We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But recently, it is reported that he hides in Hang Zho...
分类:其他好文   时间:2014-05-22 01:09:55    阅读次数:328
堡垒问题
堡垒问题是在学习递归回溯时的一个经典问题,在递归求解此类问题时,总是先判断当前状态是否行,如果可行,则试着放置一个问题的解,继续递归搜索。递归结束后之后要将状态改变回来,因为前提只是假设先放置着问题的解,之后肯定要修改回来才能保证问题解的正确性。如果忘记修改状态回来,程序肯定会出错。在搜索时,注.....
分类:其他好文   时间:2014-05-21 19:44:03    阅读次数:429
多重背包模板
/** * 多重背包: * 有N种物品和一个容量为V的背包。第i种物品最多有Mi件可用, * 每件耗费的空间是Ci,价值是Wi。 * 求解将哪些物品装入背包可使这些物品的耗费的空间总和不超过背包容量,且价值总和最大。 */ #include #include int max(int a, int b){ if (a > b)return...
分类:其他好文   时间:2014-05-21 10:00:56    阅读次数:206
poj2115(扩展欧几里得运用)
题意:求for(int i=a;i!=b;i+=c,i%=(1 解法:即求解C*x-(1C*x+K*y=b-a;如果g=gcd(C,K)不能被b-a整除,则说明无解。          用exgcd()求出一组C/g*x+K/g*y=1的解,然后两边乘上(b-a)/g将求出的x取最小正数输出。 代码:/*************************************...
分类:其他好文   时间:2014-05-21 07:09:42    阅读次数:226
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!