【发布时间】:2014-04-24 11:14:38
【问题描述】:
谁能像 6 岁的孩子一样向我解释解决方案?我无法理解解决方案。也许一些代码 cmets?
谢谢。
我在 coderbyte 上花了 2 个小时试图解决这个问题。问题来了:
让函数 ArrayAdditionI(arr) 获取存储的数字数组 在 arr 中,如果有任何数字组合,则返回字符串 true 数组可以加起来等于数组中的最大数, 否则返回字符串 false。例如:如果 arr 包含 [4, 6, 23, 10, 1, 3] 输出应该返回真,因为 4 + 6 + 10 + 3 = 23. 数组不会为空,不会包含所有相同的元素,并且可能包含负数。
我已经搜索了互联网,从人们对 coderbyte 本身的回答中阅读了一堆人的解决方案,但是没有任何 cmets,我真的很难弄清楚这是如何完成的。我已经重新开始了无数次,所以我什至不确定最后一次尝试是否更好。
我知道我需要以某种方式循环并测试每个组合索引 5、索引 4、索引 3、索引 2、索引 1 以及小于所有这些的每个组合(即仅索引 5 和索引 3 )。我只是不知道该怎么做。如果我知道列表总是由 5 个数字组成的数组,并且它需要全部 5 个,我会编写 5 个循环,它们都同样嵌套在一个大循环中,对吧?但是,由于不需要所有数字并且不知道所有情况下数组的长度,这增加了复杂性,我完全被难住了。我尝试使用 Math.floor(Math.random() * array.length);生成一个数字列表......但这也不起作用。
function ArrayAdditionI(arr) {
var longest = arr.sort( function(a,b) { return a-b });
var longest = longest[longest.length - 1];
var sumArr = function (arrb) {
var sum = 0;
for (var z = 0; z < arrb.length; z++){
sum += arrb[z];
}
return sum;
};
for (var i = 0; i > arr.length; i++) {
for (var y = 0; y > arr.length; i++) {
testArr.push(arr[i]);
if (sumArr(testArr) === longest) {
return true;
}
testArr.push(... its 4am and I'm stumped!...)
}}
// code goes here
return false;
}
// keep this function call here
// to see how to enter arguments in JavaScript scroll down
ArrayAdditionI(readline());
【问题讨论】:
-
休息一下,稍后再回来谷歌搜索子集和问题
-
对stackoverflow.com/questions/5585104/…987654321@稍作修改即可找到你的解决方案
标签: javascript arrays