如何计算所有彩票组合而不是打印它们?(C#)

时间:2017-03-22 06:43:01

标签: c#

彩票6/49问题: 以下代码打印所有可能的组合 如何计算所有组合而不是打印它们?

   static void Main()
   {
        for(int i1=1; i1<=44; i1++)
        {
            for(int i2=i1+1;i2<=45;i2++)
            {
                for(int i3=i2+1;i3<=46;i3++)
                {
                    for(int i4=i3+1;i4<=47;i4++)
                    {
                        for(int i5=i4+1;i5<=48;i5++)
                        {
                            for(int i6=i5+1;i6<=49;i6++)
                            {
                                Console.WriteLine(i1+" "+i2+" "+i3+" "+i4 +" "+i5+" "+i6);
                            }
                        }
                    }
                }
            }
        }

   }

1 个答案:

答案 0 :(得分:0)

这是一个基本的组合问题。 nCk其中n是选项数量(49),k是要选择的数量(6)。

公式为n!/k!(n-k)!

for (int i = 1; i < n; i++)
{
   nfac = nfac * i;
}

for (int j = 1; j < k; j++)
{
   kfac = kfac * j;
}

for (int p = 1; p < (n-k); p++)
{
   nkfac = nkfac * p;
}

Console.WriteLine(mfac/(kfac*nkfac));