前端动态规划


没办法了,动态规划绕不过去了,那就搞懂吧。

HJ24 合唱队 - 中等

var num;
while(num = parseInt(readline())){
    const arr = readline().split(' ').slice(0,num).map(n => parseInt(n));
    let dp1 = handle(arr);
    let dp2 = handle(arr.reverse()).reverse();
    let max = 0;
    for (let i = 0; i


HJ32 密码截取 - 简单,可以有其他方法

const line = readline();

const dp = [];
let max = 0;

for (let i = 0; i < line.length; i++){
    dp[i] = 1;
    for (let j = 0; j <=i; j++){
        let str = line.slice(j, i+1);
        if (check(str)) {
            dp[i] = Math.max(dp[i], str.length);
            max = Math.max(max, dp[i]);
        }
        
    }
}

console.log(max)

function check(str) {
    let i,j;
    if (str.length %2 ===0) {
        i = str.length/2-1;
        j = str.length/2;
    } else {
        i = (str.length-1)/2;
        j = i;
    }
    while (i >=0 && j

  HJ75 公共子串计算 - 简单,可以有其他方法

const line = readline();
const line2 = readline();

let short, long;
if (line.length >= line2.length) {
    short = line2;
    long = line;
} else {
    short = line;
    long = line2;
}

let dp = [];
let max = 0;

for (let i = 0; i < short.length; i++){
    dp[i] = 0;
    for (let j = 0; j <= i; j++) {
        let str = short.slice(j,i+1);
        if (long.indexOf(str) > -1) {
            dp[i] = Math.max(str.length, dp[i]);
            max = Math.max(max, dp[i])
        }
    }
}

console.log(max);

  HJ52 计算字符串的编辑距离 - 难