P1706 全排列問題
題目描述
輸出自然數1到n所有不重復的排列,即n的全排列,要求所產生的任一數字序列中不允許出現重復的數字。
輸入輸出格式
輸入格式:
?
n(1≤n≤9)
?
排列、輸出格式:
?
由1~n組成的所有不重復的數字序列,每行一個序列。每個數字保留5個常寬。
?
輸入輸出樣例
輸入樣例#1:?復制
3
輸出樣例#1:?復制
1 2 31 3 22 1 32 3 13 1 23 2 1
惡心的·輸出
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define N 20 using namespace std; bool vis[N]; int n,ans[N]; void dfs(int s) {if(s==n+1) {for(int i=1;i<=n;i++)printf("%5d",ans[i]);printf("\n");return ;}for(int i=1;i<=n;i++)if(!vis[i])vis[i]=true,ans[s]=i,dfs(s+1),vis[i]=false; } int main() {scanf("%d",&n);dfs(1);return 0; }
?