为什么我的代码中看不到逻辑错误?

时间:2019-10-03 17:15:57

标签: javascript arrays

如果您熟悉hackerrank的生日巧克力问题,能否请您告诉我代码中存在哪些逻辑错误? s是代表巧克力块的数字数组。可以将“ m”个连续巧克力块相加多少种方式以获得“ d”

function birthday(s, d, m) {

        var count=0;
        for (let i=0; i<s.length-m; i++)
            {   var sum=0;
                for (let j=i; j<=m; j++)
                {
                    sum=sum+s[j];
                }
                if(sum==d)
                {
                    count++;
                }
            }
            return count;
    }

2 个答案:

答案 0 :(得分:0)

问题是:

  

Lily有一条巧克力棒,她想与Ron分享给他   生日。每个正方形上都有一个整数。她决定   共享所选条形的连续段,以使   该细分与Ron的出生月份和上的整数之和相匹配   平方等于他的生日。您必须确定多少   她如何划分巧克力的方式。

JavaScript实现:

function shareQuantityOfChocoloate(s, d, m) {
    var count = 0;
    for (var i = 0; i < s.length - m + 1; i++){
        var sum = 0;
        for (var j = 0; j < m; j++){
            sum = sum + s[i + j];
        }
        if (sum == d) {
            count++;
        }
        
    }


    return count;
}

说明是here,许多讨论/实现是here

答案 1 :(得分:0)

问题:

莉莉(Lily)有一条巧克力棒,她想与罗恩(Ron)生日分享。每个正方形上都有一个整数。她决定共享所选条形的连续段,以使段的长度与Ron的出生月份相匹配,并且平方上的整数之和等于他的出生日期。您必须确定她可以分割巧克力的几种方式。

将巧克力块视为正方形阵列,s = [2,2,1,3,2]。她想找到总计为罗恩(Ron)生日(d = 4)且长度等于他的出生月份(m = 2)的细分。在这种情况下,有两个细分满足她的标准:[2,2]和[1,3]。

function birthday(s, d, m) {
    var count=0,sum=0;
    for(var i=0;i<=s.length-m;i++){
        var j=i+1;
        sum=s[i];
        while(j<i+m) sum+= s[j++];
        if(sum == d) count++;
    }
    return count;
}