学校放寒假时,我有A,B,C,D,E五本书,要分给张、王、刘、孙、李五位同学,每人只能选一本书。
我事先让每个人将自己喜欢的书填写在如下的表格中。然后根据他们填写的表来分配书本,希望设计一个程序帮我求出所有可能的分配方案,使每个学生都满意。
输入格式
输入五行,每行有五个数据,0表示不喜欢这本书,1表示喜欢这本书。
输出格式
如果没有可能的方案,输出0,否则按下面格式输出每一种方案。
answer x:
1: A
2: B
3: C
4: D
5: E
我的程序有问题,请大家们帮忙看一下
#include
using namespace std;
int a[10][10];
int vis[6];
int ans[6];
int t=0;
void print(){
t++;
cout<<"answer "<":"<for(int i=1;i<=5;i++){
cout<":";
switch(ans[i]){
case 1:cout<<"A"<break;
case 2:cout<<"B"<break;
case 3:cout<<"C"<break;
case 4:cout<<"D"<break;
case 5:cout<<"E"<break;
}
}
cout<void search(int step){
if(step==6){
print();
}
else{
for(int i=1;i<=5;i++){
if(!vis[i]&&a[step][i]){
ans[step]=i,vis[i]=1;
search(step+1);
vis[i]=0;
}
}
}
}
int main(){
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
cin>>a[i][j];
}
}
if(t==0){
cout<<"0"<return 0;
}
search(1);
return 0;
}
数组下标范围是0-4,而不是1-5