递归实现分书问题
#include<iostream>
using namespace std;
int number;
int take[5];
bool assigned[5];
int like[5][5]={ {0,0,1,1,0},
{1,1,0,0,1},
{0,1,1,0,1},
{0,0,0,1,0},
{0,1,0,0,1}};
void Try(int pos){
int i;
if(pos==5){
number++;
cout<<"第"<<number<<"个方案:";
for(i=0;i<5;i++)
cout<<take[i]<<' ';
cout<<endl;
return;
}
int book;
for(book=0;book<5;book++){
if((like[pos][book]==1) && (assigned[book]==false)){
take[pos]=book;
assigned[book]=true;
Try(pos+1);
assigned[book]=false;
}
}
}
int main(){
number=0;
int book;
for(book=0;book<5;book++){
assigned[book]=false;
}
Try(0);
return 0;}
我的微信公众号