组合问题,输出 n 个数的所有组合

liu_jie_1 liu_jie_1 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以下是我写的输出四个数字的所有组合,思路是这样的:我先将这四个数字正序排列好,然后按照组合元素个数由 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;


}
...全文

相关推荐

评论 18
收藏 已收藏
分享
返回顶部
liu_jie_1
C++ 语言 65,214 成员 250,514 内容