7-1 输出全排列 (20 分)
请编写程序输出前个正整数的全排列(),并通过9个测试用例(即从1到9)观察逐步增大时程序的运行时间。
输入格式:
输入给出正整数()。
输出格式:
输出1到的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序,即序列排在序列之前,如果存在使得 并且 。
输入样例:
3
输出样例:
123 132 213 231 312 321
#include <iostream> #include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int a[100]; for(int i=1;i<=n;i++) { a[i] = i; } do { int top =1; for(int i=1;i<=n;i++) { printf("%d",a[i]); } printf("\n"); } while(next_permutation(a+1,a+1+n)); return 0; }
code2:
#include<bits/stdc++.h> using namespace std; int book[230]= {0}; int a[203]; int n; void dfs(int i) { if(i==n) { for(int j=0; j<n; j++) { printf("%d",a[j]); } printf("\n"); return ; } for(int j=1; j<=n; j++) { if(!book[j]) { a[i++] = j; book[j] =1; dfs(i); i--; book[j] = 0; } } } int main() { //int n; cin>>n; dfs(0); }