中易网

C语言中如何用递归的方法求从n个数中取m个数的排列组合的所有情况,其中n<m,要求写出完整的程序

答案:1  悬赏:10  
解决时间 2021-02-17 01:30
C语言中如何用递归的方法求从n个数中取m个数的排列组合的所有情况,其中n<m,要求写出完整的程序
最佳答案
典型的组合问题,解法有递归、回溯等等
递归法较简单,代码如下:

void combine(int a[], int n, int m, int b[], int M);

参数:
a 存放候选数字
n 总项数
m 取出项数
b 存放选出结果
M  = m


#include "stdio.h"
#define MAX 100
 
void combine(int a[], int n, int m, int b[], int M);
 
int main(void)
{
 int i;
 int a[MAX], b[MAX];
 
 for (i = 1; i < 100; i++)
  a[i - 1] = i;
 
 combine(a, 5, 4, b, 4);
}
 
void combine(int a[], int n, int m, int b[], int M)

 int i, j;
 
 for (i = n; i >= m; i--)
  {
   b[m - 1] = i - 1;
   if (m > 1)
    combine(a, i - 1, m - 1, b, M);
   else
    {
     for (j = M - 1; j >= 0; j--)
      printf("%d ", a[b[j]]);
     printf("
");
    }
  }
}

其他方法可查阅相关资料。


追问:
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中国人寿保险股份有限公司(小康街)地址在什么
别克04年君威ABS空气怎么排
梦见干草垛倒了
寄信到看守所多久可以到
没显示市盈的股有风险吗?
枣强高一班主任付新周是男老师还是女老师,怎
洪武三十二国语全集下载地址
超级好看的大力女都奉顺第一集播出啦,有谁想
延庆观炸鸡焦作总店在什么地方啊,我要过去处
求解P5是PS4独占吗
狗狗尿在了木地板上味道特别大该怎么除臭?必
如何成为一名新时代下合格的网站编辑
谁有五年级上学期《绿色的歌谣》歌词?
现在做服饰类的微商可靠吗?求教
河南境内黄河最大的支流是
推荐资讯
烟叶的内在质量指什么?
淡紫色休闲九分裤配什么颜色衣服鞋子好看?谢
跪求饭店用的雅间名称?
罗曼蒂克美容美发连锁直营店地址有知道的么?
2013衢州高级中学有几个实验班?要考试吗?名
去交话费移动公司给的收据能当做账的原始凭证
筷子巷在哪里啊,我有事要去这个地方
西安华珠体育运动材料有限公司这个地址在什么
平度宏奥铜业怎么样
知乎 1000万够花一辈子吗
37墙怎么撂底?怎么甩茬 ?
湛江农垦实验中学教师待遇如何?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?