Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
35168 byxx2023 【搜索与回溯】选书(例题) C++ 无测评数据 0 MS 0 KB 1272 2023-12-29 17:26:07

Tests(0/0):


#include<bits/stdc++.h> using namespace std; /* 原来将fun函数中增加了v,但数组fy的数大于5,周围的数不一定是0,所以后面v==5不成立无法输出 */ int fy[6][6]={{0,0,0,0,0,0}, {0,0,0,1,1,0}, {0,1,1,0,0,1}, {0,0,1,1,0,0}, {0,0,0,0,1,0}, {0,0,1,0,0,1}}; int a[555]; bool c[555]; int sum=0; void che(int x)//判断书字母 { if(x==1) { printf("A\n"); } else if(x==2) { printf("B\n"); } else if(x==3) { printf("C\n"); } else if(x==4) { printf("D\n"); } else if(x==5) { printf("E\n"); } } void print()//输出 { printf("answer %d:\n",sum); printf("Student Zhang:"); che(a[1]); printf("Student Wang:"); che(a[2]); printf("Student Liu:"); che(a[3]); printf("Student Sun:"); che(a[4]); printf("Student Li:"); che(a[5]); } void fun(int k) { for(int i=1;i<=5;i++) { if(c[i]==false&&fy[k][i]==1)//保证第k个学生满意 { a[k]=i;//将第i个书赋值给第k个学生 c[i]=true;//标记 if(k==5)//人数达到 { sum+=1;//方案数增加 print(); } fun(k+1);//进行下个学生 c[i]=false;//取消标记 } } } int main() { fun(1); return 0; }