繁体   English   中英

使用 y 数查找求和 x 的方法数的程序?

[英]Program to find the number of ways of achieving a sum x using y numbers?

这是我正在处理的一个问题的子问题。 一个人站在 x 轴 0 处,并在他的手机上收到一条到达目的地的字符串。

+ 表示正向移动 1 个单位。

- 表示向负方向移动 1 个单位。

发送给他的字符串和他实际收到的字符串被外部因素扭曲了。

他实际收到的字符串包含他无法读取的第三个字符,即“?”。 如果他读 ? 他随机选择向右或向左移动 1 个单位。

我必须找出成功人士带着收到的短信到达最终目的地的概率。

例如:

s1 = +-+-

s2 = +-??

s1 的计算结果为 0 (1-1+1-1)。

s2 可以有值 (2,0,-2,0)

所以他到达目的地的概率是 2/4 = 0.5

到目前为止,我所做的是根据 s1 计算最终目标分数,并根据 s2 中的 +s anf -s 计算临时分数,两者之间的差异是我试图达到的总和。

现在的问题本质上变成了使用 y 1s 和 -1s 有多少种方法可以实现 x 的总和。 并使用该值除以 2^y 计算概率。

private static double calculateProb(String s1, String s2) {
    // TODO Auto-generated method stub
    char[] c1 = s1.toCharArray();
    char[] c2 = s2.toCharArray();
    int num_q = 0, temp = 0;
    int score = 0;

    for(char c: c1){
        if(c=='+')
            score+=1;
        else if(c=='-')
            score-=1;
    }
    for(char c : c2){
        if(c=='+')
            temp+=1;
        else if(c=='-')
            temp-=1;
        else if(c=='?')
            num_q++;
    }

    return 0.0;
}

这是我到目前为止。

有多少种方法可以使用 y 1s 和 -1s 获得 x 的总和

首先是一些极端情况:如果 | × | > y有零个方法。 如果x是偶数而y是奇数,反之亦然,它也为零。 否则,您需要a 1s 和b −1s,其中ab = xa + b = y 所以a =( y + x )/2 和b =( yx )/2。 然后,您可以以 ( y !) / ( a ! × b !) 方式在一个方向上安排这些a步,并在另一个方向上安排b步。 这是方式选择一个元素输出Y的数目,使用二项式系数有时写作YCA和显着的“Y选择”计算的。 有关进一步讨论,请参阅https://en.wikipedia.org/wiki/Combination

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM