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
阅读全文
摘要:1. 要求背包必须装满且求最大值 把记忆数组初始化dp[0]=0, 其余为负无穷。 2, 要求背包必须装满且求最小值 把记忆数组初始化dp[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
阅读全文
摘要:代码如下: #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,
阅读全文
摘要:1,记忆化搜索的思想 ;对于相同的状态往往得出同样的结果,导致要重复计算很多次,在搜索的过程中我们把结果记录下来 就可以大量减少计算量。 2,记忆搜索的实现:首先创建一个记忆数组,用来记录结果,然后在搜索的过程中判断此状态是否搜索过,如果搜索过直接使用 已经记录下的结果。 例如 ;记忆搜索斐波那契数
阅读全文
摘要:1. sort()的头文件是 <algorithm> 2 sort() 是对数组进行排序的函数, sort()函数有三个参数 分别为 (数组的首地址,结束的地址,排序的方式) 第三个参数可以省略, 默认为升序。 降序的实现需要和结合函数例如:bool cmp(int a,int b){ return
阅读全文