来来来,暑假准备到了哦,和老师一起去夏令营吧!
到分房间的时候了,小伙伴对各自的房间号都有要求,该怎么办呢?
这道题和之前的分工作的那题有得一拼(),所以也用类似的方法处理一下就好了。
1.先是检查该房间是否已被分出还有该房间是否符合当前同学的喜好:
if((book[i]==0)&&(hobby[k][i]==1))
2.如果符合,就把房间给他;
3.然后一直按照该步骤持续直到所有的同学都领到了房间。
代码如下:
1 #include2 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 else28 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 }
代码如有不足,欢迎指教!