【洛谷P1706全排列问题】
题目描述
输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。
代码如下:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<iomanip>
using namespace std;
int num=0,a[10001]={0},n,r;
bool b[10001]={0};
int search(int);
int print();
int main()
{
cin>>n;
r=n;
search(1);
}
int search(int k)
{
int i;
for(i=1;i<=n;++i)//循环模拟寻找排列的过程;
if(!b[i])//布尔变量为真;
{
a[k]=i;
b[i]=1;
if(k==r)print();
else search(k+1);
b[i]=0;
}
}
int print()
{
num++;
for(int i=1;i<=r;i++)
cout<<setw(5)<<a[i];
cout<<endl;
}
I can do all things