两只塔姆沃斯牛
[USACO2.4]两只塔姆沃斯牛 The Tamworth Two
所有的题解来源于先前存在的题解
注释有点少,凑合着看吧
code:
#inlcude<bits/stdc++.h>//万能头nb
#include<Windows.h>//你谷不能用Windows.h,记得注释掉^_^
using namespace std;
char map1[10][10];//初始化地图
int cfx=1,ffx=1;//1为北,2为东,3为南,4为西,牛和农夫的方向
int cw[2],fw[2];//牛和农夫位置
bool ztc=0,ztf=0;//牛与农夫暂停1min
unsigned long long sum=0;//计数器
int mian()
{
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
cin>>map1[i][j];
if(map1[i][j]=='C')
{
cw[0]=i;//行
cw[1]=j;//列
}
if(map1[i][j]=='F')
{
fw[0]=i;//行
fw[1]=j;//列
}
}
}//读入地图,农夫和牛的位置
whlie(1)
{
if(sum>40000)//玄学判断,走了辣么多次还追不到,就莫得希望了
{
cout<<0;
return 0;
}
/*system("cls");
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
cout<<map1[i][j];
}
cout<<endl;
}//用来看移动轨迹
cout<<sum;*/
sum++;
//方向改变
if(ztc==1)
{
ztc=0;
cfx++;
}
if(ztf==1)
{
ztf=0;
ffx++;
}
if(cfx>4)
{
cfx-=4;
}
if(ffx>4)
{
ffx-=4;
}
if(cfx==1)//北
{
if(map1[cw[0]-1][cw[1]]!='*'&&cw[0]!=0)//cow位置判断
{
map1[cw[0]-1][cw[1]]='C';
map1[cw[0]][cw[1]]='.';
cw[0]--;//cow位置
}
else
{
ztc=1;
}
}
if(ffx==1)
{
if(map1[fw[0]-1][fw[1]]!='*'&&fw[0]!=0)//农夫位置判断
{
map1[fw[0]-1][fw[1]]='F';
map1[fw[0]][fw[1]]='.';
fw[0]--;//农夫位置
}
else
{
ztf=1;
}
}
if(cfx==2)//东
{
if(map1[cw[0]][cw[1]+1]!='*'&&cw[1]!=9)//cow位置判断
{
map1[cw[0]][cw[1]+1]='C';
map1[cw[0]][cw[1]]='.';
cw[1]++;//cow位置
}
else
{
ztc=1;
}
}
if(ffx==2)
{
if(map1[fw[0]][fw[1]+1]!='*'&&fw[1]!=9)//农夫位置判断
{
map1[fw[0]][fw[1]+1]='F';
map1[fw[0]][fw[1]]='.';
fw[1]++;//农夫位置
}
else
{
ztf=1;
}
}
if(cfx==3)//南
{
if(map1[cw[0]+1][cw[1]]!='*'&&cw[0]!=9)//cow位置判断
{
map1[cw[0]+1][cw[1]]='C';
map1[cw[0]][cw[1]]='.';
cw[0]++;//cow位置
}
else
{
ztc=1;
}
}
if(ffx==3)
{
if(map1[fw[0]+1][fw[1]]!='*'&&fw[0]!=9)//农夫位置判断
{
map1[fw[0]+1][fw[1]]='F';
map1[fw[0]][fw[1]]='.';
fw[0]++;//农夫位置
}
else
{
ztf=1;
}
}
if(cfx==4)//西
{
if(map1[cw[0]][cw[1]-1]!='*'&&cw[1]!=0)//cow位置判断
{
map1[cw[0]][cw[1]-1]='C';
map1[cw[0]][cw[1]]='.';
cw[1]--;//cow位置
}
else
{
ztc=1;
}
}
if(ffx==4)
{
if(map1[fw[0]][fw[1]-1]!='*'&&fw[1]!=0)//农夫位置判断
{
map1[fw[0]][fw[1]-1]='F';
map1[fw[0]][fw[1]]='.';
fw[1]--;//农夫位置
}
else
{
ztf=1;
}
}
if(cw[0]==fw[0]&&cw[1]==fw[1])//两只牛被农夫逮到了
{
break;
}
}
cout<<sum;//输出
return 0;//完结!
}