33,008
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
bool ok(int a,int b);
bool guoqu(int a,int b,vector < int > c);
bool guolai(int a,int b,vector < int > c);
const int ren=3;
const int sheep=3;
int main(int argc, char **argv)
{
vector < int > v;
v.push_back(33);
guoqu(3,3,v);
system("pause");
return 0;
}
bool guoqu(int a,int b,vector < int > c){
//if(a==0&&b==0)
// return true;
for(int i=0;i<=a;i++)
for(int j=0;j<=b;j++)
if(i+j>0&&i+j<=sheep){
int a1,b1,a2,b2,d;
a1=a-i;
b1=b-j;
a2=ren-a1;
b2=ren-b1;
d=a1*10+b1;
if(find(c.begin(),c.end(),d)==c.end()&&ok(a1,b1)){
c.push_back(d);
if(guolai(a2,b2,c)){
cout<<c.size()-1<<".运"<<i<<"牧师和"<<j<<"野人过去,"
<<"这边"<<a1<<b1<<",那边"<<a2<<b2<<endl;
return true;
}
}
}
return false;
}
bool guolai(int a,int b,vector < int > c){
if(a==3&&b==3)
return true;
for(int i=0;i<=a;i++)
for(int j=0;j<=b;j++)
if(i+j>0&&i+j<=sheep){
int a1,b1,a2,b2,a3,b3,d;
a1=a-i;
b1=b-j;
a2=ren-a1;
b2=ren-b1;
d=a2*10+b2;
if(find(c.begin(),c.end(),d)==c.end()&&ok(a2,b2)){
c.push_back(d);
if(guoqu(a2,b2,c)){
cout<<c.size()-1<<".运"<<i<<"牧师和"<<j<<"野人过来,"
<<"这边"<<a2<<b2<<",那边"<<a1<<b1<<endl;
return true;
}
}
}
return false;
}
bool ok(int a,int b){
return a==3||a==0||a==b;
}
ren=3;
chuan=2;
def ok(a,b):
(a==3) or (a==0) or (a==b)
def guoqu(a,b,c):
for ms in range(a+1):
for yr in range(b+1):
if (ms+yr>0) and (ms+yr<=chuan):
zbms=a-ms
zbyr=b-yr
nbms=ren-zbms
nbyr=ren-zbyr
shu=zbms*10+zbyr
if (shu not in c) and (ok(zbms,zbyr)):
if guolai(nbms,nbyr,c+[shu]):
print "%d and %d,this:%d%d,that:%d%d"%(ms,yr,zbms,zbyr,nbms,nbyr)
return True
return False
def guolai(a,b,c):
if (a==3) and (b==3):
return True
for ms in range(a+1):
for yr in range(b+1):
if (ms+yr>0) and (ms+yr<=chuan):
nbms=a-ms
nbyr=b-yr
zbms=ren-nbms
zbyr=ren-nbyr
shu=zbms*10+zbyr
if (shu not in c) and (ok(zbms,zbyr)):
if guoqu(zbms,zbyr,c+[shu]):
print "%d and %d,this:%d%d,that:%d%d"%(ms,yr,zbms,zbyr,nbms,nbyr)
return True
return False
guoqu(0,2,[33])