poj 2245 水题
求组合数,dfs即可
1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<queue> 7 using namespace std; 8 int N,m,t; 9 int a[15],vis[15]; 10 void dfs(int st,int n) 11 { 12 int i; 13 if(n==6) //已选择6个 14 { 15 int fl=1; 16 for(i=1;i<=N;i++) 17 { 18 if(vis[i]) 19 { 20 if(fl) printf("%d",a[i]),fl=0; 21 else printf(" %d",a[i]); 22 } 23 } 24 printf("\n"); 25 return; 26 } 27 for(i=st;i<=N;i++) 28 { 29 if(!vis[i]) 30 { 31 vis[i]=1; 32 dfs(i+1,n+1); 33 vis[i]=0; 34 } 35 } 36 } 37 int main() 38 { 39 int i,j,k=0; 40 //freopen("1.in","r",stdin); 41 while(scanf("%d",&N)!=EOF&&N>0) 42 { 43 memset(vis,0,sizeof(vis)); 44 if(k++) printf("\n"); 45 for(i=1;i<=N;i++) cin>>a[i]; 46 dfs(1,0); 47 } 48 return 0; 49 }