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 }

 

你可能感兴趣的:(poj)