My Carelessness

Back to your page!


Or leave your comments here.

RegendLa

导航

关于回溯与夏令营

  来来来,暑假准备到了哦,和老师一起去夏令营吧!

  到分房间的时候了,小伙伴对各自的房间号都有要求,该怎么办呢?

  这道题和之前的分工作的那题有得一拼(关于回溯与招聘市场),所以也用类似的方法处理一下就好了。

    1.先是检查该房间是否已被分出还有该房间是否符合当前同学的喜好:

      if((book[i]==0)&&(hobby[k][i]==1))

    2.如果符合,就把房间给他;

    3.然后一直按照该步骤持续直到所有的同学都领到了房间。

  代码如下:

 1 #include<stdio.h>
 2 int hobby[5][5]={{0,0,1,1,0}/*第一个人的喜好*/,
 3     {1,1,0,0,1}/*第二个人的喜好*/,
 4      {0,1,1,0,0}/*第三个人的喜好*/,
 5      {0,0,0,1,0}/*第四个人的喜好*/,
 6      {0,1,0,0,1}/*第五个人的喜好*/}; 
 7 int book[5]={0};
 8 int ans[5]={0};
 9 void out();
10 void f(int k);
11 int main()
12 {
13     f(0);
14     return 0;
15 }
16 void f(int k)
17 {
18     int i;
19     for(i=0;i<=4;i++)
20     {
21         if((book[i]==0)&&(hobby[k][i]==1))
22         {
23                 ans[k]=i;
24                 book[i]=1;
25                 if(k==4)
26                     out();
27                 else
28                     f(k+1);
29                 book[i]=0;
30         }
31     }
32 }
33 void out()
34 {
35     int i;
36     for(i=0;i<=4;i++)
37         printf("%d:%d ",i+1,ans[i]+1);
38     printf("\n");
39 }
View Code

  代码如有不足,欢迎指教!

      

posted on 2015-05-23 18:09  最爱七  阅读(89)  评论(0编辑  收藏  举报




Thanks for your coming!
If what you read helps,I would appreciate!