本文主要是介绍1215: 【C4】【搜索】【回溯】数字全排列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
排列与组合是常用的数学方法。 先给一个正整数 ( 1 < = n < = 5 ) 。例如n=3,列出所有组合,并且按字典序输出:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
输入
输入一个整数n( 1<=n<=5)
输出
输出所有全排列
每个全排列一行,相邻两个数用空格隔开(最后一个数后面没有空格)
样例输入
3
样例输出
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
Code:
#include<bits/stdc++.h>
using namespace std;
int n,ans[100];
bool vis[100];
void dfs(int dep){if(dep==n+1){for(int i=1;i<=n;i++){if(i!=n) cout<<ans[i]<<" ";elsecout<<ans[i];}cout<<endl;return;}for(int i=1;i<=n;i++){if(vis[i]==false){vis[i]=true;ans[dep]=i;dfs(dep+1);vis[i]=false;}}
}
void get(){cin>>n;
}
void to_dfs(){dfs(1);
}
int main(){get();to_dfs();
}
这篇关于1215: 【C4】【搜索】【回溯】数字全排列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!