1. 程式人生 > >【P1706 全排列問題】

【P1706 全排列問題】

產生 stream iomanip == man pri 數字 setw mes

題目描述

輸出自然數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;
}

【P1706 全排列問題】