随笔分类 -  算法

典型递归算法例子-------Python实现
摘要:#!/usr/bin/python #coding=utf-8 ''' Created on 2012-9-25 @author: linzuxin ''' status = {} def factorial(n): ''' 输入一个数字,求其阶乘。status是一个hash,用来存储中间结果,避免重复计算 @param n: 要求的数字 @return: n的阶乘 ''' if n == 0 or n == 1: status[0] = 1 status[1] = 1 re... 阅读全文

posted @ 2012-09-26 16:56 linzuxin 阅读(275) 评论(0) 推荐(0)

0/1背包问题--Dynamic Programming
摘要:DP问题的特征:重复子问题存在最优子集背包问题属于经典的DP问题,而0/1背包问题是属于最简单的情况。0/1的意思是每种物品只有一件,要么放入背包中,要么不放问题定义:有N个物品,要放入容量为W的背包中,第i件物品重量为w(i),价值为v(i),问要怎样放才能在不超过背包容量的基础上,获得最大的价值。算法描述:需要用到递归的思想,定义A(i, j)为前i个物品中在容量为j的情况下所能达到的最大价值,则A(0,j) = 0,A(i,0) = 0(i <= N and j <= W).如果w(i) > j时,说明第i件物品不能放入背包中,价值不变,所以A(i, j) = A(i 阅读全文

posted @ 2012-09-25 22:28 linzuxin 阅读(204) 评论(0) 推荐(0)

导航