全部评论
分两组g1和g2。从头开始遍历着2n个数字,对于一个数i,我们考虑它可以放在哪组中。有以下两种情况: g1的长度不足n时,可直接把这个数加入g1 对于g2中的下一个位置g2LastIndex,如果abs(i - g1[index]) >= k,那么也可以把i加入g2 如此迭代即可。【但是这个代码只能对30%的样本,应该是哪里出了点疏漏,希望有大佬能指点一下】 let [n, k] = [5,2]; //测试数据
let group1 = [];
let group2 = [];
let result = 0;
function process(g1, g2, currentNum) {
console.log(g1, g2, currentNum)
if (g1.length === n && g2.length === n) result++;
else {
if (g1.length < n) process(g1.concat(currentNum), g2, currentNum + 1);
let g2LastIdx = g2.length ? g2.length : 0;
if (Math.abs(currentNum - g1[g2LastIdx]) >= k) process(g1, g2.concat(currentNum), currentNum + 1)
}
}
process(group1, group2, 1);
print(result*2);
//输出结果的2倍
//因为比如A={1,2},B={3,4}
//那么A={3,4},B={1,2}也是合法的分组方式
等一个大佬
我也不会
相关推荐
05-04 11:10
哈尔滨工业大学 嵌入式工程师 点赞 评论 收藏
分享
点赞 评论 收藏
分享