c++中一列数123456要求三个一组,怎么得出所有排列组合?

2024-11-03 21:13:33
推荐回答(2个)
回答(1):

// xx.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include
#include
#include
void main()
{
int i,n,c,j;
int a[6];//记录数组下标
int b[33];//存所要随机的33个数
for(i=0;i<33;i++)
b[i]=i;

srand(unsigned(time(NULL)));
a[0]=rand()%33;//赋初值
for(i=1;i<6;i++)//随机5个不同下标的数
{
c=rand()%33;//随机0-32 的数
for(n=0;n {
j=0; //检索位,如果存在相同值j置-1;
if(a[n]==c)j=-1;
}
if(j==-1)i=i-1;//如果存在相同值,返回上一层循环
else a[i]=c;// 不同则将新的随机值,附给数组a
}
for(i=0;i<6;i++)
{
printf("%d ",b[a[i]]);//根据随机的6个不同下标值,输出
}
getchar();
}

回答(2):

简单全排列 c++
#include
using namespace std;
const int N=1001;
int a[N],n;
int work(int t)
{
int i,j,k;
if(t==n){
cout< for(i=2;i<=n;i++)cout<<' '< cout< return 0;
}
for(i=t;i<=n;i++){
j=a[t];a[t]=a[i];a[i]=j;
work(t+1);
j=a[t];a[t]=a[i];a[i]=j;
}
return 0;
}
int main(void)
{
int i,j,k;
cin>>n;
for(i=1;i<=n;i++)a[i]=i;
work(1);
system("pause");
return 0;
}