怎样用C语言从一组特定数选出几个数的所有组合,例如从10个数中选出5个数的所有组合

如题所述

我擦,这算法有些复杂,没搞对,弄了一个小时只弄出个全排列的,你看能改改不:

#include <stdio.h>
#define NUM 10

int main ()
{
int i, j, k, l, m, n, a[NUM];
n = 0;
printf("Enter NUM numbers:\n");
for(i = 0; i < NUM; i++){
scanf("%d", &a[i]);
}
for(i = 0; i < NUM; i++){
for(j = 0; j < NUM; j++){
if(i == j){
continue;
}
for(k = 0; k < NUM; k++){
if(k == i || k ==j){
continue;
}
for(l = 0; l < NUM; l++){
if(l == i || l == j || l == k){
continue;
}
for(m = 0; m < NUM; m++){
if(m == i || m == j || m == k || m == l){
continue;
}
printf("%d,%d,%d,%d,%d\n", a[i], a[j], a[k], a

[l], a[m]);
n++;
}
}
}
}
}

printf("Counts:%d\n", n);

return 0;

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-20
C10中选5=252个组合

C语言,怎样从一组给定数据中选出所有满足某个和值范围的5个数的...
这类问题属多点求值类问题,采用穷举法循环取值,判断符合条件者输出。算法分析:1 循环取数。2 求和。3 判断条件 若成立则输出 4 取下一数 注:根据题意的不同,循环的层数也不同。可参看我在百度的答案,或许对你有帮助。http:\/\/zhidao.baidu.com\/question\/2073941442195632788.html?oldq=1 ...

从10数中选出五个最大的 c语言程序设计
char *argc[]){int a[10],i,j,k;printf("Random 10 Numbers are as follows:\\n");srand((unsigned)time(NULL));for(i=0;i<10;i++)printf("%d ",a[i]=rand());printf("\\n\\n5 largest number is as follows:\\n");

从1-10选5个数字组合,所有的组合结果用计算机输出
const int maxn=100;int a[maxn];void combback(int n,int r){ int i=0,j;a[i]=1;do{ if(a[i]-i<=n-r+1)\/\/还可以向前试探 { if(i==r-1)\/\/已经找到一个组合输出 { for(j=0;j<r;j++)cout<<a[j]<<' ';cout<<endl;a[i]++;continue;} i++;\/\/向前试探 a[i]...

用c语言编一个程序:从任意10个数中任选4个数并全输出?
int num[10] = {1,2,3,4,5,6,7,8,9,10}, i;srand((unsigned)time(0));printf("从原数组: \\n");for(i = 0; i < sizeof num\/sizeof num[0]; ++i)printf("%d ", num[i]);printf("\\n中随机选出的4个数为: ");for(i = 0; i < 4; ++i)printf("%d ", num[r...

C语言中,怎样在固定的数列中,随机选出3个数
以下代码能从0~9这10个数中随机选出3个数来。若有其他要求你可照猫画虎……include <stdio.h>#include "stdlib.h"#include "time.h"int main(void){ int a[]={1,2,3,4,5,6,7,8,9,0},i,j,k,t; srand((unsigned)time(NULL)); for(k=10,i=0;i<3;i++){ pr...

C语言 | 选择法对10个数排序
C语言中,利用选择法对一组10个整数进行排序的实现方法直观易懂。该排序算法的基本思想是,每一轮比较中,从剩余未排序的数中选出最小的一个与当前未排序序列的第一个元素交换位置,直至所有元素有序。以下是排序过程的四个关键步骤:首先,通过键盘输入获取10个整数,作为待排序的数组。然后,程序会...

c语言 跪求:输入M个数从中取N个数进行组合并输出所有组合项_百度...
典型的组合问题,解法有递归、回溯等等 递归法较简单,代码如下: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[], ...

用C语言怎么实现从1到n中选r个出来,并把各种情况分行打印
呵呵,这个年代像楼主这样能坚持自己嚼馒头吃,不容易啊 难度不大,我举个例子说。假设从1到10000中选出能整除3和整除4的所有数,再分别打印3的倍数、4的倍数和同为3和4的倍数

求教c语言指定数字序列的指定个数排序比如说:0123456789(不重复...
n-1]); count++; } printf("总排序方法:%d\\n",count); }可以看到,总的排序方式是3024=9*8*7*6 根据排列组合的知识可以知道,这就相当于9个数中任意找4个出来排序的方法,也就是C94 结果正确。注意结果一共有 3024行,我只截了一部分。

c语言中组合怎么计算?
10,3)=10*9*8\/3*2*1=720\/6=120。组合的定义:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。计算公式:...

相似回答