+_+??【c语言习题求助,快来帮帮我】??+_+

来源:百度知道 编辑:UC知道 时间:2024/07/04 11:59:40
有n个数,求其中m(m<n)个数的组合。要求:printf出所有的组合。
只用说算法,不用代码。

大哥们,不是要求最终的组合数。
而是要打印出所有的组合方式!
可以事先定义好a【i++】=i++;
比如cin或scanf n和m后,(假如我输入的是4和2),就要打印出所有的6种组合方式。

算法很简单啊 在确定没有重复的数基础上
分别把数放在数组里 然后对位置做组合 算法如下:
首先做一个函数 是递归函数描述如下
输出组合中最靠前的数组下标为“a”的“b”个数的组合
然后递归 调用
调用终结是当a到n只有b个数为止
有重复数也是一样的 但是得单独处理一下

//有n个数,求其中m(m<n)个数的组合。要求:printf出所有的组合。
/*计算组合数*/
#include <iostream.h>
#include<math.h>
int cmn(int m,int n)
{
if(n<0||m<0||m<n)
return 0;
if(m==n)
return 1;
if(n==1)
return m;
return cmn(m-1,n)+cmn(m-1,n-1);
}
void main()
{
int m,n;
cout<<"Input the Number of people and Number of combinations:"<<endl;
cin>>m>>n;
cout<<"Result="<<cmn(m,n)<<endl;
}

用C++实现从m个数当中选n个组合
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
int a[100];
void zh(int n,int m,int num)
{
int i;
if(m==num-1)
{
for(i=1;i<