组合问题,输出 n 个数的所有组合
以下是我写的输出四个数字的所有组合,思路是这样的:我先将这四个数字正序排列好,然后按照组合元素个数由 1 个到 4 个 依次将可能的组合输出来。可是大家不难看出我的代码冗余而没有新意,这只是四个数的组合 如果我要求十个数的组合 不可能让我敲十个嵌套循环吧。 谁有更好的办法,请告诉我。最好说的详细一点。先谢谢了。
#include<iostream>
using namespace std;
void arrange(int *x)
{
int t=sizeof(x);
for(int i=0;i<t;i++)
for(int j=i;j<t;j++)
if(x[j]<x[i])
{
int m ;
m=x[i];
x[i]=x[j];
x[j]=m;
}
}
void main()
{
int xx[4]={3,2,1,4};
int *p=xx;
int m=sizeof(p);
// 正序排列xx[4]
arrange(p);
for(int i=0;i<m;i++)
cout<<p[i]<<endl;
for( i=0;i<m;i++)
for(int j=i+1;j<m;j++)
cout<<p[i]<<" "<<p[j]<<endl;
for( i=0;i<m;i++)
for( int j=i+1;j<m;j++)
for(int n=j+1;n<m;n++)
{
cout<<p[i]<<" "<<p[j]<<" "<<p[n]<<endl;
}
for( i=0;i<m;i++)
for(int j=i+1;j<m;j++)
for( int n=j+1;n<m;n++)
for(int x=n+1;x<m;x++)
cout<<p[i]<<" "<<p[j]<<" "<<p[n]<<" "<<p[x]<<endl;
}
...全文
相关推荐
(剑指offer)从n个数中选取m个数的所有组合
题目 从值为1-n的整数中选取m个数的所有组合并输出 思路 选择第i(m <=i1,则重复1、2步骤 代码 public static void C(int n,int m,int[] a,int[] b){ for(int i = m;i 1){ C(i-1,m-1,a,b); }else { for(int j=0;j < b.length;j++){ System.out.printf("%d ",a[b[j]]); } System.out.println(); }
C语言回溯法 实现组合数 从N个数中选择M个数
在平时的算法的题目中,时常会遇到组合数相关的问题,暴力枚举。在N个数中挑选M个数出来。利用for循环也可以处理,但是可拓展性不强,于是写这个模板供以后参考
m个数中选n个的选法
比较简单的递归算法的应用,希望能对初学者有所帮助
JavaScript实现从数组中选出和等于固定值的n个数
主要介绍了JavaScript实现从数组中选出和等于固定值的n个数的方法,需要的朋友可以参考下
计算组合数并输出组合
计算组合数C(i, j)并输出所有组合。开发环境为VC6.0,项目类型为控制台程序。


