2017-03-22 39 views
-4

彩票6/49問題: 以下代碼打印所有可能的組合 如何計算所有組合而不是打印它們?如何計算所有彩票組合而不是打印它們?(C#)

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

代替'Console.WriteLine'剛剛寫I ++;並在循環的頂部聲明一個int型變量。 –

+0

要計算所有組合,您是否使用過滲透和組合? – JohnG

+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));