输入一个整数n,输出的n的全排列。
标签:puts 多少 hid lap for click print logs space
输入一个整数n,输出的n的全排列。
3
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
#include<cstdio> #include<algorithm> #include<iostream> #include<cstring> using namespace std; int n; int visi[1005],a[1005]; void print(int x) { for(int i=1;i<x;++i)printf("%d ",a[i]); printf("%d",a[x]); puts(""); } void dfs(int cur) { if(cur==n+1)print(cur-1); else for(int i=1;i<=n;i++) { if(!visi[i]) { a[cur]=i; visi[i]=1; dfs(cur+1); visi[i]=0; } } } int main() { cin>>n; dfs(1); puts(""); return 0; }
n个数中取m个数从小到大排列,详见样例。
3 2
1 2
1 3
2 3
当你要输出全排列的时候,你的cur是到N+1的时候结束
所以就不需要考虑排序的问题啦
标签:puts 多少 hid lap for click print logs space
原文地址:http://www.cnblogs.com/gc812/p/7069550.html