【问题标题】:How can I convert a combination function to permutation function?如何将组合函数转换为置换函数?
【发布时间】:2013-12-19 16:03:21
【问题描述】:

我正在开发一个包含大量gui 的单独程序,因此我制作了一个更简单的程序以寻求帮助。

我不太了解permutationscombinations

无论如何,我这里有一段代码可以解决这个功能:

F (n,r) = n!/(r!(n-r)!)

您可以更改代码中的 n 和 r,它会为您提供这两个输入的答案。

public class peanuts
{

static int n,r;


public static void main (String[] args)
{

   n= 8;
    r=3;

  int m=1;

    if(n>>1 < r)
        r = n - r;
    for(int o=n+1-r;o<n+1;o++)
        m *= o;
    for(int o=r;o>0;o--)
        m /= o;
    Math.round(m);

      System.out.println ("C("+n+","+r+ ") is "+ m );
}}

我想稍微修改一下,让它解决这个置换函数:

F (n,r) = n!/(n-r)!)

【问题讨论】:

  • 题供以后写题,为什么把所有非代码都变成代码格式?
  • 我猜他这样做是为了便于阅读,尽管您可以使用 blockquote 来达到此目的
  • 只要把它放到我的 GUI 中。作品:)

标签: java algorithm combinations permutation


【解决方案1】:

删除除以r! 的第二个 for 循环。

for(int o=r;o>0;o--)
  m /= o;

这将m 除以r!。删除此循环。

【讨论】:

  • 删除这个? for(int o=r;o&gt;0;o--) m /= o;
【解决方案2】:

排列的计算公式为:

F (n,r) = n!/(n-r)!

组合的计算公式为:

F (n,r) = n!/(r!(n-r)!)

所以你只需要删除第二个 for 循环,在该循环中你要除以阶乘 r,即删除这个:

for(int o=r;o>0;o--)
  m /= o;

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    相关资源
    最近更新 更多