生日巧克力问题的非蛮力算法

时间:2019-05-31 15:51:49

标签: c# algorithm linq brute-force

问题:https://www.hackerrank.com/challenges/the-birthday-bar/problem

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

功能说明

它应该返回一个整数,该整数表示Lily划分巧克力棒的方式。

s:整数数组,每个巧克力方块上的数字 d:整数,罗恩的生日 m:整数,罗恩的出生月份

打印一个整数,表示莉莉分配巧克力棒与罗恩分享的方式总数。

示例:Lily希望将Ron m = 2平方加到d =3。以下两个部分满足条件:

enter image description here

这是我列举所有可能性的蛮力解决方案:

static int birthday(List<int> s, int d, int m) {
    int n = 0;
    for(int i = 0; i < s.Count - (m - 1); i++) { //Updated, previous s.Count 
        if(s.Skip(i).Take(m).Sum() == d)  
            n++;
    }
    return n;
}

问题:是否有解决该问题的非蛮力解决方案?

0 个答案:

没有答案