递归实现排列型枚举

mac2022-06-30  125

把 1~n 这 n 个整数排成一行后随机打乱顺序,输出所有可能的次序。

输入格式

一个整数n。

输出格式

按照从小到大的顺序输出所有方案,每行1个。

首先,同一行相邻两个数用一个空格隔开。

其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。

代码:

#include<iostream> using namespace std; int a[9],b[10]={0},n; void dfs(int step) {int i; if(step==n) {for(i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; return ; } for(i=1;i<=n;i++) if(b[i]==0) {a[step]=i; b[i]=1; dfs(step+1); b[i]=0; } } int main() { cin>>n; dfs(0); return 0; }

 

最新回复(0)