#include<stdio.h> #include<string.h>
const int N=13; int n; int base[N],map[N]; bool visit[N];
void dfs(int depth) { if(depth==6) { for(int i=0;i<6;i++) { if(i) printf(" "); printf("%d",map[i]); } printf("\n"); return; }
for(int i=0;i<n;i++) { if(!visit[i]&&(depth==0||base[i]>map[depth-1])) { visit[i]=1; map[depth]=base[i]; dfs(depth+1); visit[i]=0; } } }
int main() { bool first=true; while(scanf("%d",&n),n) { if(first) first=false;else printf("\n");
for(int i=0;i<n;i++) scanf("%d",&base[i]); memset(visit,0,sizeof(visit)); dfs(0); } }
|
从流程可以看出,所谓的深度优先搜索,也就是在一个序列上从前向后依次枚举各个位置
阅读(912) | 评论(0) | 转发(0) |