洛谷 P1706 全排列問題
阿新 • • 發佈:2017-11-18
個數 copy algorithm style 自然數 num 一個 col http
P1706 全排列問題
題目描述
輸出自然數1到n所有不重復的排列,即n的全排列,要求所產生的任一數字序列中不允許出現重復的數字。
輸入輸出格式
輸入格式:
n(1≤n≤9)
輸出格式:
由1~n組成的所有不重復的數字序列,每行一個序列。每個數字保留5個常寬。
輸入輸出樣例
輸入樣例#1: 復制3
輸出樣例#1: 復制
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
思路:搜索
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,vis[10],cnt[10]; void dfs(int num){ if(num==n){ for(int i=1;i<=n;i++) printf("%5d",cnt[i]); cout<<endl; return; } for(int i=1;i<=n;i++){ if(!vis[i]){ vis[i]=1; cnt[num+1]=i; dfs(num+1); vis[i]=0; } } } int main(){ scanf("%d",&n); dfs(0); }
洛谷 P1706 全排列問題