高手进来:如何用C语言编写一个数字组合问题,即在给定个数的数字中列出其所有组合

来源:百度知道 编辑:UC知道 时间:2024/05/28 15:43:16
例如1,2,3,4取一个有1,2,3,4四种,取两有C24=4*3=12种;取三个有C34=4种;取四个有C44=1种,即在给定个数的数字中列出其所有可能的组合
多谢指出,是我算错了,C24=4*3/(2*1)=6,不过指问题要有一般性,给定数字的个数不确定,要用C语言写

纠正一下: C24 = 4!/2!/2! = 6

n,m 是可以任意输入的,你还要什么一般性?

n, m = 4 2
1 : 1 2
2 : 1 3
3 : 1 4
4 : 2 3
5 : 2 4
6 : 3 4
Press any key to continue

#include<iostream>
using namespace std;

int N = 1;

void print(int a[], int n) {
cout<<' '<<N++<<" : ";
for (int i = 0; i < n; i++)
cout<<a[i]<<' ';
cout<<endl;
}

void swap(int &a, int &b) {
int t = a;
a = b;
b = t;
}//交换

void reverse(int a[], int i, int j) {
while (i<j) {
swap(a[i++],a[j--]);
}
}//颠倒

f(int a[], int n) {
for (int i = 0; i < n-1; i++)
if(a[i] > a[i+1])
return 0;
return 1;
}

void main() {
int *a, i, j, n, m;
cout<<" n, m = ";
cin>>n>>m;
a = new int[n];