@2017libin
2019-06-16T17:06:57.000000Z
字数 1226
阅读 59
acm
// 数组出事初始化全0int array[100] = {};// (string)[https://www.runoob.com/cplusplus/cpp-strings.html]
磁带问题:先执行运行时间少的程序,运行时间少的程序是...。
安排活动:选择最早结束的先执行
dp[i][j] = max(dp[i+1][j], dp[i+1][j+1]) + data[i][j]//其中data[i][j]表示第i层第j个元素的值,dp[i][j]表示的是从最顶端到第i层第j列最大的和。
L[i][j] = 0 if i = 0 or j = 0L[i][j] = L[i-1][j-1] + 1 if $a_i$=$b_j$L[i][j] = max(L[i-1][j], L[i][j-1]) if $a_i$!=$b_j$//其中L[i][j]表示长度为i的a和长度为j的b最长的公共子序列长度。
3.最长公共子串
将上述的改为 L[i][j] = 0 if $a_i$!=$b_j$//因为公共字串要求是连续的公共部分,所以不相等时要重新开始计数
dp[i] = max(dp[i-1],dp[i-2]+money[i])//dp[i]表示的是从0~i抢劫到最多的钱,money[i]表示的是第i间屋子的钱。
dp[i][j] = 0 if i = 0 or j = 0dp[i][j] = dp[i-1][j] if w[i]>jdp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]]+v[i]) if w[i]<j//其中,v[i]表示第i件物品的值,w[i]表示的是第i件物品的重量。//dp[i][j]表示的是具有j空间的书包,可以装i件物品的最大价值
6.完全背包
与01背包不同的是,每一件物品可以选择无限件(当然,如果空间允许的话),所以只需要在01背包的基础上改动一点就可以了。
dp[i][j] = max(dp[i-1][j],dp[i-1][j-k*w[i]]+k*v[i]) for k <- (1, n), n = j//w[i]
//与完成背包不同的是,这里每件物品的件数都有给出,这里只要将k的取值范围改动一下就ok啦dp[i][j] = max(dp[i-1][j],dp[i-1][j-k*w[i]]+k*v[i]) for k <- (1, n), n = (num[i], j//w[i])
//一共有n个导弹dp[i] = 1 for i in (1, n),dp[i]表示发送的前n个导弹中最多可以拦截的个数for i in (1, n)dp[i] = max(dp[j]+1) for j in (1, n-1) if i > j
在此输入正文