emmmm我也想了很久才做出來好吧…作為一個瘋狂練搜尋的小菜雞
題目描述
輸出自然數 11 到 nn 所有不重複的排列,即 nn 的全排列,要求所産生的任一數字序列中不允許出現重複的數字。
輸入格式
一個整數 nn。
輸出格式
由 1∼n 組成的所有不重複的數字序列,每行一個序列。
每個數字保留 55 個場寬。
輸入輸出樣例
輸入 #1複制
輸出 #1複制
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
1<=n<=9;
直接上代碼
#include <iostream>
#include<cstdio>
using namespace std;
int n;
int a[10],b[10];
void dfs(int i)
{
if (i > n)
{
for(int j = 1; j <=n; j++)
printf("%5d",a[j]);
printf("\n");
return;
}
for (int j = 1; j <= n; j++)//暴力枚舉n個數
{
if(a[i]==0&&b[j]!=1)//把j存起來 看有沒有用過
{
a[i] = j;
b[j] =1 ;
dfs(i + 1);
a[i] = 0;//回溯
b[j] = 0;
}
}
return;
}
int main()
{
cin >> n;//輸入
dfs(1);
return 0;
}