2483http://go.helloworldroom.com:50080/problem/2483
1.这次少写了一个判断(判断人有没有用过)
2.写函数时别用混i和k
3.别思考太片面 AC程序:
include
using namespace std;
int sum=1;
int a[6][6];
char b[5],x[5]={'A','B','C','D','E'};
bool flag[5]={0},flag1[5]={0},b1=false;//定义
void search(int k){
if(k>5){
cout<<"answer "<<sum<<":"<<endl;
for(int i=0;i<5;i++){
cout<<i+1<<": "<<b[i]<<endl;
}
sum++;//输出
b1=true;
return ;
}
for(int i=0;i<5;i++){
if(a[k-1][i]==1/*判断是否喜欢*/&&flag[k-1]==false/*判断是否有人用过*/&&flag1[i]==false/*拿过书了吗*/){
b[k-1]=x[i];//赋值
flag1[i]=true;
flag[k-1]=true;//设下决定
search(k+1);
flag1[i]=false;
flag[k-1]=false;//销毁决定
}
}
} int main(){
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
cin>>a[i][j];
}
}//输入
for(int i=0;i<5;i++){
if(a[0][i]==0&&a[1][i]==0&&a[2][i]==0&&a[3][i]==0&&a[4][i]==0){
cout<<0;
return 0;
}
}//是否有书谁都不喜欢
search(1);//搜索
if(!b1){
cout<<0;
}
return 0;
}