使用dfs实现1至n全阵列。
我的方法是从所述第一位置开始,使用dfs看上去就像每个头号位置,
当某个位置。从小到大枚举1至n所有号码,打假说
尚未使用之前在这个位置上的几个选择这个号码。然后搜索下
职位数值。
我的代码例如以下:
#include<iostream> #include<cstring> using namespace std; int perm[10000],used[10000],num; void init() { int i; memset(used,0,sizeof(used)); scanf("%d",&num); for(i=0;i<num;i++) perm[i]=i+1; } void out() { int i; for(i=0;i<num;i++) { if(i) printf(" "); printf("%d",perm[i]); } printf("\n"); } void dfs(int pos) { int i; if(pos==num) { out(); return; } for(i=1;i<=num;i++) if(!used[i]) { perm[pos]=i; used[i]=1; dfs(pos+1); used[i]=0; } } void permutation() { init(); dfs(0); } int main() { permutation(); }
版权声明:本文博客原创文章。博客,未经同意,不得转载。
时间: 2024-10-13 01:02:33