題目網址:http://wenku.baidu.com/view/816dfaf29e31433239689324.html
#include<fstream>
#include<iostream>
using namespace std;
int main()
{
ifstream fin ("ttwo.in");
ofstream fout ("ttwo.out");
char pos[11][11]={'d'};
int cpos[3]={1,2,3},fpos[3]={4,5,6};
char cflag='u';//u:up;d:down
char fflag='u';
int step=0;
int i,j;
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
fin>>pos[i][j];
}
}
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
if(pos[i][j]=='F')
{
fpos[1]=i;
fpos[2]=j;
pos[i][j]='.';
}
if(pos[i][j]=='C')
{
cpos[1]=i;
cpos[2]=j;
pos[i][j]='.';
}
}
}
//cout<<"cow init path:"<<cpos[1]<<' '<<cpos[2]<<endl;
//cout<<"farmer init path:"<<fpos[1]<<' '<<fpos[2]<<endl;
while(cpos[1]!=fpos[1]|| cpos[2]!=fpos[2])
{
step++;
if(step>160000)
{
fout<<0<<endl;
return 0;
}
if(cflag=='u')
{
if(cpos[1]>1 && (pos[cpos[1]-1][cpos[2]]=='.' || pos[cpos[1]-1][cpos[2]]=='F'))
{
cpos[1]-=1;
//cout<<"cow path is up and cow path:"<<cpos[1]<<' '<<cpos[2]<<endl;
goto label;
}
else if((cpos[1]>1 && pos[cpos[1]-1][cpos[2]]=='*') || cpos[1]==1)
{
cflag='r';
//cout<<"cow stop and turn right:"<<endl;
goto label;
}
}
if(cflag=='r')
{
if(cpos[2]<10 &&(pos[cpos[1]][cpos[2]+1]=='.' || pos[cpos[1]][cpos[2]+1]=='F'))
{
cpos[2]++;
//cout<<"cow path is right and cow path:"<<cpos[1]<<' '<<cpos[2]<<endl;
goto label;
}
else if((cpos[2]<10 && pos[cpos[1]][cpos[2]+1]=='*') || cpos[2]==10)
{
cflag='d';
//cout<<"cow stop and turn down:"<<endl;
goto label;
}
}
if(cflag=='d')
{
if(cpos[1]<10 && (pos[cpos[1]+1][cpos[2]]=='.' || pos[cpos[1]+1][cpos[2]]=='F'))
{
cpos[1]++;
//cout<<"cow path is down and cow path:"<<cpos[1]<<' '<<cpos[2]<<endl;
goto label;
}
else if(cpos[1]==10 || (pos[cpos[1]+1][cpos[2]]=='*' && cpos[1]<10))
{
cflag='l';
//cout<<"cow stop and turn left:"<<endl;
goto label;
}
}
if(cflag=='l')
{
if(cpos[2]>1 && (pos[cpos[1]][cpos[2]-1]=='.' || pos[cpos[1]][cpos[2]-1]=='F'))
{
cpos[2]--;
//cout<<"cow path is left and cow path:"<<cpos[1]<<' '<<cpos[2]<<endl;
goto label;
}
else if(cpos[2]==1 || (pos[cpos[1]][cpos[2]-1]=='*' && cpos[2]>1)){
cflag='u';
//cout<<"cow stop and turn up:"<<endl;
goto label;
}
}
label:
if(fflag=='u')
{
if(fpos[1]>1 && (pos[fpos[1]-1][fpos[2]]=='.' || pos[fpos[1]-1][fpos[2]]=='C'))
{
fpos[1]-=1;
//cout<<"farmer path is up and farmer path:"<<fpos[1]<<' '<<fpos[2]<<endl;
continue;
}
else if((fpos[1]>1 && pos[fpos[1]-1][fpos[2]]=='*') || fpos[1]==1)
{
fflag='r';
//cout<<"farmer stop and turn right:"<<endl;
continue;
}
}
if(fflag=='r')
{
if(fpos[2]<10 &&(pos[fpos[1]][fpos[2]+1]=='.' || pos[fpos[1]][fpos[2]+1]=='C'))
{
fpos[2]++;
//cout<<"farmer path is right and farmer path:"<<fpos[1]<<' '<<fpos[2]<<endl;
continue;
}
else if((fpos[2]<10 && pos[fpos[1]][fpos[2]+1]=='*') || fpos[2]==10)
{
fflag='d';
//cout<<"farmer stop and turn down:"<<endl;
continue;
}
}
if(fflag=='d')
{
if(fpos[1]<10 && (pos[fpos[1]+1][fpos[2]]=='.' || pos[fpos[1]+1][fpos[2]]=='C'))
{
fpos[1]++;
//cout<<"farmer path is down and farmer path:"<<fpos[1]<<' '<<fpos[2]<<endl;
continue;
}
else if(fpos[1]==10 || (pos[fpos[1]+1][fpos[2]]=='*' && fpos[1]<10))
{
fflag='l';
//cout<<"farmer stop and turn left:"<<endl;
continue;
}
}
if(fflag=='l')
{
if(fpos[2]>1 && (pos[fpos[1]][fpos[2]-1]=='.' || pos[fpos[1]][fpos[2]-1]=='C'))
{
fpos[2]--;
//cout<<"farmer path is left and farmer path:"<<fpos[1]<<' '<<fpos[2]<<endl;
continue;
}
else if(fpos[2]==1 || (pos[fpos[1]][fpos[2]-1]=='*' && fpos[2]>1))
{
fflag='u';
//cout<<"farmer stop and turn up:"<<endl;
continue;
}
}
}
fout<<step<<endl;
return 0;
}
The Tamworth Two
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.