题目:http://poj.org/problem?id=2245
简单的DFS。。
下面是AC代码:
#include<cstdio> using namespace std; int k; int a[100]; bool vis[100]; void dfs(int cur,int cnt){ if(cnt==6){ int i; for( i=0;i<k;i++) if(vis[i]) { printf("%d",a[i]); break;} for(int j=i+1;j<k;j++) if(vis[j]) { printf(" %d",a[j]); } printf("\n"); return ; } else if(cnt<k){ for(int i=cur;i<k;i++){ if(!vis[i]){ vis[i]=true; dfs(i+1,cnt+1); vis[i]=false; } } } } int main(){ while(scanf("%d",&k)!=EOF,k){ for(int i=0;i<k;i++) scanf("%d",&a[i]); dfs(0,0); printf("\n"); } return 0; }