#include<iostream>
using namespace std;
void print_permutation(int n,int* A,int cur)
{
int i,j;
if(cur==n) //结束条件,递归边界
{
for(i=0; i<n; i++) cout<<" "<<A[i];
cout<<endl;
}
else
for(i=1; i<=n; i++) //尝试在A[cur]中填各种整数i
{
int ok=1;
for(j=0; j<cur; j++)
if(A[j]==i) ok=0;//如果i已经在A[0]~A[cur-1]出现过,则不能再选
if(ok)
{
A[cur]=i;
print_permutation(n,A,cur+1);//递归调用
}
}
}
int main()
{
int n;
int a[100];
while(cin>>n)
{
print_permutation(n,a,0); //初始条件
}
return 0;
}
暴力法生成1~n的排列
最新推荐文章于 2020-03-11 22:22:27 发布