const slices = [1, 8, 6, 11, 2, 7, 1, 1, 7];
const l = slices.length;
const n = 3;// 选择不大于三个数(但是这三个数不能相邻) 如同背包问题 最多选择所有给定的物品进去(物品可以相邻)
const dp = new Array(l + 1).fill(0).map((e) => new Array(n + 1).fill(0));
for (let i = 1; i <= l; i++) {
for (let j = 1; j <= n; j++) {
if (i > 1) {
dp[i][j] = Math.max(dp[i - 2][j - 1] + slices[i - 1], dp[i - 1][j]);
} else {//第一个数据
dp[i][j] = slices[i - 1];
}
}
}
console.log(dp);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)