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

Tests(0/0):


#include<bits/stdc++.h> using namespace std; int n=5,sum; int flag[6]; //int a[6][6];数组可以开大一点,以防溢出 int a[17][17]={//五个人喜欢书目的情况,1为喜欢 {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 b[6],c[6]; int fun2(int x)//字符转换 { if(x==1) { cout<<"A"; } else if(x==2) { cout<<"B"; } else if(x==3) { cout<<"C"; } else if(x==4) { cout<<"D"; } else { cout<<"E"; } return 0; } void print()//输出 { printf("answer %d:\n",sum); printf("Student Zhang:"); fun2(c[1]); printf("\nStudent Wang:"); fun2(c[2]); printf("\nStudent Liu:"); fun2(c[3]); printf("\nStudent Sun:"); fun2(c[4]); printf("\nStudent Li:"); fun2(c[5]); } void fun1(int k) { for(int i=1;i<=5;i++) { if(flag[i]==0&&a[k][i]==1)//书是否被选过&这个人是否喜欢这本书 { flag[i]=1; c[k]=i; if(k==5)//只要满足五个人都有喜欢的书就可以算作一种方案 { sum++; print(); } else//查找下一个人 { fun1(k+1); } flag[i]=0; } } } int main() { fun1(1); return 0; }