我这样写,但是有错误:比如从1到11中取出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);
不好意思,应这样,但是我不知道对不对:从1到11中取出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);
其实组合的算法都可以用基本数学公式来分解。 你的问题关键在于解决阶乘问题。个人意见..........呵呵给你个计算阶乘的函数; public long GetJC(int a) { if (a == 0 || a == 1) { return 1; } else { return a*GetJC(a-1); } }你可以用此函数分解下你的问题。
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);
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);
你的问题关键在于解决阶乘问题。个人意见..........呵呵给你个计算阶乘的函数; public long GetJC(int a)
{
if (a == 0 || a == 1)
{
return 1;
}
else
{
return a*GetJC(a-1);
}
}你可以用此函数分解下你的问题。
http://topic.csdn.net/u/20090515/22/e6016edf-b293-43fc-be01-4882c79716c4.html