本文共 1151 字,大约阅读时间需要 3 分钟。
给出一个n, 请输出n的所有全排列
读入仅一个整数n (1<=n<=10)
一共n!行,每行n个用空格隔开的数,表示n的一个全排列。并且按全排列的字典序输出。
3
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
这个题目个人是用深搜解决的,貌似用STL的话就很简单了
就是先搜索那个数放第一,再递归放后面的数
这题目竟然卡了printf,scanf,我还能说什么
#include #include #include #include using namespace std;int visit[11];int b[11];int n;void dfs(int i){ if(i>n) { for(int j=1;j<=n;j++) { if(j!=n) printf("%d ",b[j]); else printf("%d\n",b[j]); } return; } else { for(int j=1;j<=n;j++) { if(!visit[j]) { b[i] = j; visit[j] = 1; dfs(i+1); visit[j] = 0; } } }}int main(){ scanf("%d",&n); memset(visit,0,sizeof(visit)); dfs(1); return 0;}
转载于:https://www.cnblogs.com/l609929321/p/6576900.html