首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

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

发布网友 发布时间:2022-04-24 07:45

我来回答

1个回答

热心网友 时间:2023-10-09 01:10

典型的组合问题,解法有递归、回溯等等
递归法较简单,代码如下:

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("\n");
    }
  }
}



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

追问👌谢啦

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com