码迷,mamicode.com
首页 > 其他好文 > 详细

数字全排列

时间:2020-03-03 01:25:50      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:多少   位置   字典   nbsp   int   stream   for   iostream   print   

# 题意

n个数,将数字由1~n排成一排有多少种排列方法
按照字典序输出

 

# 题解

 

递归执行,path记录当前的值,一个f数组记录当前的数字有没有被记录,遍历每一个数字,如果没被记录就记录然后,记录下一个位置的path,回溯的时候只需要把标记数组置为false即可

 1 #include <iostream>
 2 using namespace std;
 3 const int N=10;
 4 int path[N];
 5 bool flag[N];
 6 int n;
 7 void dfs(int u){
 8    if(u==n+1){
 9       for (int i = 1; i <=n ; ++i)  printf("%d ",path[i]);
10       puts("");
11       return;
12    }
13    for (int i = 1; i <=n ; ++i) {
14       if(!flag[i]){
15          path[u]=i;
16          flag[i]=true;
17          dfs(u+1);
18          flag[i]=false;
19       }
20    }
21 }
22 int main(){
23    cin>>n;
24    dfs(1);
25 }

 

数字全排列

标签:多少   位置   字典   nbsp   int   stream   for   iostream   print   

原文地址:https://www.cnblogs.com/hhyx/p/12399061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!