求C#的组合算法(如1-34共多少种组合,列出),
像双色球那样,谢谢了

解决方案 »

  1.   

    http://topic.csdn.net/u/20090217/21/F41ED9F6-F929-451C-A5C9-80D2E408422A.htmlhttp://topic.csdn.net/u/20081029/09/d6b7e751-55f1-4bd0-8b1c-c0ecd3d14e25.html
      

  2.   

    我这样写,但是有错误:比如从111中取出7个数字进行组合。
                int Count = 0;
                for (int i = 1; i <= 5; i++)
                {
                    for (int j = 2 ; j <= 6; j++)
                    {
                        for (int k = 3; k <= 7; k++)
                        {
                            for (int l =4; l <= 8; l++)
                            {
                                for (int m = 5; m <= 9; m++)
                                {
                                    for (int n =6; n <= 10; n++)
                                    {
                                        for (int o = 7; o <=11; o++)
                                        {
                                            Console.WriteLine("{0:d2} {1:d2} {2:d2} {3:d2} {4:d2} {5:d2} {6:d2}", i, j, k, l, m, n, o);
                                            Count += 1;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }            Console.WriteLine("Count = {0}", Count);
      

  3.   

    不好意思,应这样,但是我不知道对不对:从111中取出7个数字进行组合。            int Count = 0;
                for (int i = 1; i <= 5; i++)
                {
                    for (int j =i +1 ; j <= 6; j++)
                    {
                        for (int k =j+1; k <= 7; k++)
                        {
                            for (int l =k +1; l <= 8; l++)
                            {
                                for (int m = l +1; m <= 9; m++)
                                {
                                    for (int n =m+1; n <= 10; n++)
                                    {
                                        for (int o = n+1; o <=11; o++)
                                        {
                                            Console.WriteLine("{0:d2} {1:d2} {2:d2} {3:d2} {4:d2} {5:d2} {6:d2}", i, j, k, l, m, n, o);
                                            Count += 1;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }            Console.WriteLine("Count = {0}", Count);
      

  4.   

    其实组合的算法都可以用基本数学公式来分解。
    你的问题关键在于解决阶乘问题。个人意见..........呵呵给你个计算阶乘的函数; public long GetJC(int a)
            {
                if (a == 0 || a == 1)
                {
                    return 1;
                }
                else
                {
                    return a*GetJC(a-1);
                }
            }你可以用此函数分解下你的问题。
      

  5.   

    34的阶层除以34减去7的阶层,明白阶层吧,想算出多少种 就有多少种这种用除乖递归算法不好吧,超过21的数的阶乖用long都表示不了,应该用哪种数据类型表示呢
      

  6.   

    http://topic.csdn.net/u/20090716/15/98238ccb-3600-49a6-a81b-e67345f0768a.html?18004
    http://topic.csdn.net/u/20090515/22/e6016edf-b293-43fc-be01-4882c79716c4.html