全排列问题

输出自然数1到n所有不重复的排列(n的全排列),所产生的任一数字序列中不允许出现重复的数字。

样例输入1

3

样例输出1

 

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

 

code:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int a[101],n;
 4 bool v[21];
 5 void dfs(int k){
 6     if(k == n+1){
 7         for(int i = 1;i<=n;i++){
 8             cout<< a[i]<<" ";
 9         }
10         cout<<endl;
11         return;
12     } 
13     for(int i = 1;i<=n;i++){
14         if(!v[i]){
15             a[k] = i;
16             v[i] = true;
17             dfs(k+1);
18             v[i] = 0;
19         }
20     }
21     
22 }
23 int main(){
24     cin>>n;
25     dfs(1);
26 }

 

 

 

  

posted @ 2023-03-04 11:14  nasia  阅读(34)  评论(0)    收藏  举报