标签:多少 位置 字典 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