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
网友的问题如下:
我可能没说清楚,
比如有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
相关文章推荐
- 【BZOJ4870】组合数问题(计数DP,快速幂)
- [六省联考2017]组合数问题
- [NOIp2016提高组]组合数问题
- 组合数问题(zyys版)
- bzoj 4870: [Shoi2017]组合数问题 动态规划
- UOJ275 [清华集训2016] 组合数问题 【Lucas定理】【数位DP】
- 组合数问题
- NOIP2016 提高组Day2 T1 组合数问题
- Noip2016day2 组合数问题problem
- BZOJ4737 组合数问题 【Lucas定理 + 数位dp】
- NOIP2016Day2T1-组合数问题
- jzoj4906.组合数问题
- BZOJ4870 [Shoi2017]组合数问题 【组合数 + 矩乘】
- UOJ275[清华集训2016]组合数问题
- 【GDOI2018模拟7.9】组合数问题
- 组合数问题
- 【JZOJ 5215】【GDOI2018模拟7.9】组合数问题
- 【NOIP2016】洛谷2282 组合数问题
- 组合数问题
- 一道组合数问题--出自 曹钦翔_wc2012组合计数与动态规划