现在给出了一个由数字 0 和 1 组成的序列𝐴,它可能不是一个交错序列,但是你可以从这个 序列中选择一些数字出来,按他们在序列𝐴中原有的相对顺序排列(即选取𝐴的一个子序列), 使得你最后得到的是一个交错序列。问这样能得到的交错序列的最长长度是多少。
数据范围: ,序列中只包含 0 和 1。
第一行包含一个整数𝑛,表示输入序列的长度。第二行包含 𝑛 个 0 或 1,表示对应的序列。
输出能够得到的最长交错序列的长度。
3 0 1 0
3
8 1 1 0 0 1 1 0 0
4
let n=readline() let input=readline() function solve(n, input) { let arr = input.split(' ').map(Number) let pre = arr[0] let cnt = 1 for (let i = 1; i < arr.length; i++) { if (arr[i] != pre) { cnt++ pre = arr[i] } } console.log(cnt) } solve(n, input)
// 没通过 超了,但就是想留着 let n = '3' let input = "1 1 0 0 1 1 0 0" function solve(n, input) { let arr = input.split(' ').map(Number) if (arr.length > 1) { let ans = recursion(arr, arr[0]) console.log(ans) }else{ console.log(0) } } function recursion(arr, num) { if (arr.indexOf(num) === -1) { return 0 } else { let index = arr.indexOf(1 - num) arr = arr.slice(index) return 1 + recursion(arr, 1 - num) } } solve(n, input)