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

C语言递归组合问题

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

我来回答

3个回答

热心网友 时间:2022-04-27 18:13

#include<iostream>

using namespace std;
#include"stdlib.h"
#include"time.h"
void main()
{
time_t t;
srand((unsigned) time(&t));
int m,n;
cin>>n;
cin>>m;
for(int i=0;i<m;i++)
{

cout<<rand()%n+1<<" ";

cout<<rand()%n+1<<endl;

}
}
第二种方法
下面是用了个递归函数
using namespace std;
#include"stdlib.h"
#include"time.h"
void digui(int n,int m)
{
for(int i=0;i<m;i++)
{

cout<<rand()%n+1<<" ";

}
cout<<endl;
n--;
if(n!=0)
digui(n,m);
}
void main()
{
time_t t;
srand((unsigned) time(&t));
int m,n;
cin>>n;
cin>>m;
digui(n,m);
}

热心网友 时间:2022-04-27 19:31

给你个递推公式P(s,n,m)=P(s+1,n,m-1)+P(s+1,n,m)
P(s,n,m)表示打印从s到n任选m个的所有组合
函数体P(s,n,m,p[],pos) p[]存储以求出的组合,pos指向p[]最后面一个数的后面一个位置
递归函数两个出口
m==0 打印出p[]
m==n-s+1打印出p[]再加上s到n这n-s+1个数

热心网友 时间:2022-04-27 21:06

#include<stdio.h>
int fuc(int=n)
{for(n=1;n<=3;n++);
if(m<n);
return(n);}
main()
{int m,n;
printf("input two nembers n m:");
scanf("%d%d",&n,&m);
for(m=1;m<=2;m++)
{fuc(n);}
printf("%d\t\t%d\n\n",m,n)
}

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