07 2019 档案

摘要:普通代码实现: for(int i=0;i<n;i++){ for(int j=0;j<=W;j++){ if(j<w[i]) dp[i+1][j]=dp[i][j]; else dp[i+1][j]=max(dp[i][j],dp[i+1][j-w[i]]+p[i]); } } cout<< dp 阅读全文
posted @ 2019-07-31 17:53 zw100 阅读(155) 评论(0) 推荐(0) 编辑
摘要:1. 要求背包必须装满且求最大值 把记忆数组初始化dp[0]=0, 其余为负无穷。 2, 要求背包必须装满且求最小值 把记忆数组初始化dp[0]=0, 其余为正无穷。 阅读全文
posted @ 2019-07-31 17:04 zw100 阅读(380) 评论(0) 推荐(0) 编辑
摘要:核心代码; 定义 dp[i][j] 是从前不i-1个物品中,选出来总重量不超过j的物品时,总价值的最大值 显然 dp[i][j]=0, 因为你没物品可以取的时候,背包的价值为零。 dp[0][j]=0; for(int i=0;i<n;i++){ for(int j=0;j<w;j++){ if(j 阅读全文
posted @ 2019-07-31 10:11 zw100 阅读(168) 评论(0) 推荐(0) 编辑
摘要:代码如下: #include<iostream> #include<cmath> #include<cstring> using namespace std; int n,m; int a[110][110],dp[110][110]; int dir[4][2]={0,1,0,-1,1,0,-1, 阅读全文
posted @ 2019-07-30 20:45 zw100 阅读(130) 评论(0) 推荐(0) 编辑
摘要:1,记忆化搜索的思想 ;对于相同的状态往往得出同样的结果,导致要重复计算很多次,在搜索的过程中我们把结果记录下来 就可以大量减少计算量。 2,记忆搜索的实现:首先创建一个记忆数组,用来记录结果,然后在搜索的过程中判断此状态是否搜索过,如果搜索过直接使用 已经记录下的结果。 例如 ;记忆搜索斐波那契数 阅读全文
posted @ 2019-07-30 17:25 zw100 阅读(138) 评论(0) 推荐(0) 编辑
摘要:1. sort()的头文件是 <algorithm> 2 sort() 是对数组进行排序的函数, sort()函数有三个参数 分别为 (数组的首地址,结束的地址,排序的方式) 第三个参数可以省略, 默认为升序。 降序的实现需要和结合函数例如:bool cmp(int a,int b){ return 阅读全文
posted @ 2019-07-30 16:53 zw100 阅读(369) 评论(0) 推荐(0) 编辑