利用简单的全排列思想,进行暴力搜索!!
//七个和尚挑水
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int data[8][8];
int i,j;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
data[i][j]=0;
data[1][2]=1;data[1][4]=1;//第一个和尚星期二和星期四
data[2][1]=1;data[2][6]=1;
data[3][3]=1;data[3][7]=1;
data[4][5]=1;
data[5][1]=1;data[5][4]=1;data[5][6]=1;
data[6][2]=1;data[6][5]=1;
data[7][3]=1;data[7][6]=1;data[7][7]=1;
//利用全排列进行包里搜索,下面是全排列函数
string ooo="1234567";
vector<string> voo;
sort(ooo.begin(),ooo.end());
while(next_permutation(ooo.begin(),ooo.end()))
{
//cout<<ooo<<endl;
for(i=1;i<8;i++)
{
if((data[i][ooo[i-1]-'0'])!=1)
break;
if(i==7)
voo.push_back(ooo);
}
}
for(vector<string>::iterator iter=voo.begin();iter!=voo.end();iter++)
cout<<*iter<<endl;
while(!voo.empty()) //这也是vector的输出。
{
cout<<voo.back()<<endl;
voo.pop_back();
}
}