您的位置:首页 > 其它

n取的r的组合数问题

2005-06-17 19:04 183 查看
下午在逛BBS的时候,发现一个小小的算法问题,觉得有趣,便花了点时间简单的写了一下(时间是挤出来的嘛:)
网友的问题如下:

我可能没说清楚,
比如有1,2,3,4,5,6,7这7个数字:
他们的任意6个数字的组合只能有下面几种情况:
1 2 3 4 5 6
1 3 4 5 6 7
1 2 4 5 6 7
1 2 3 5 6 7
1 2 3 4 6 7
1 2 3 4 5 7
2 3 4 5 6 7
对吧~
但是数字越多出先的组合也越多~所以想做个程序把这些组合给找出来~

这问题用递归即可解决, 代码如下
public class CodeForComb
{ 
        static int [] CombData=new int[10];

         static void Main()
{  
   a[0]=6;//打印6个数
comb(7,6); //按7中取6个不同的组合数

}



static void comb(int m,int k)
{
int i,j;
for( i=m;i>=k;i--)
{
CombData[k]=i;
if(k>1)
comb(i-1,k-1);//还有其他组合数 递归

else  //有一组组合数了
{
for(j=a[0];j>0;j--)
{
Console.Write(CombData[j]);
}
Console.WriteLine();

}//else

}//for
} //comb
}//class

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: