1.思考题15-2 最长回文子序列
let a = "Hello World!";function LCA(arr) { let n = arr.length, ret = [], w = []; for(let i = 0; i < n; i++) { ret.push([]); w.push([]); } for(let i = 0; i < n; i++) { ret[i][i] = 1; w[i][i] = a[i]; } for(let l=2; l < n+1; l++) { for(let i = 0; i < n-1 && i+l-1<n; i++) { let j = i+l-1; if(a[i] == a[j]) { ret[i][j] = ret[i+1][j-1] + 2; w[i][j] = a[i] + w[i+1][j-1] + a[j]; } else if(ret[i+1][j] > ret[i][j-1]) { ret[i][j] = ret[i+1][j]; w[i][j] = w[i+1][j]; } else { ret[i][j] = ret[i][j-1]; w[i][j] = w[i][j-1]; } } } return {ret,w};}let {ret,w} = LCA(a.split(''));console.log(ret[0][11])console.log(w)
2.思考题15-4 参差打印