第一行一个整数表示放假天数
第二行 n 个数 每个数为0或1,第 i 个数表示公司在第 i 天是否营业
第三行 n 个数 每个数为0或1,第 i 个数表示健身房在第 i 天是否营业
(1为营业 0为不营业)
一个整数,表示小Q休息的最少天数
4 1 1 0 0 0 1 1 0
2
小Q可以在第一天工作,第二天或第三天健身,小Q最少休息2天
let nDayoff = readline(); let workStr = readline(); let gymStr = readline(); let work = workStr.split(' ').map(Number); let gym = gymStr.split(' ').map(Number); let len = work.length; let dp = new Array(nDayoff + 1); for (let i = 0; i < nDayoff + 1; i++) { dp[i] = new Array(3).fill(Infinity); } //console.log("dp:", dp); dp[0][0] = dp[0][1] = dp[0][2] = 0; for (let i = 1; i <= len; i++) { if (gym[i - 1] === 1) { // 可以锻炼 dp[i][1] = Math.min(dp[i - 1][0], dp[i - 1][2]); } if (work[i - 1] === 1) { //可以工作 dp[i][2] = Math.min(dp[i - 1][0], dp[i - 1][1]); } //可以休息 dp[i][0] = Math.min(dp[i - 1][0], Math.min(dp[i - 1][1], dp[i - 1][2])) + 1; } let res = Math.min(dp[len][0], Math.min(dp[len][1], dp[len][2])); console.log(res);