社区讨论
萌新求调(样例没过)
P1518[USACO2.4] 两只塔姆沃斯牛 The Tamworth Two参与者 1已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo29431o
- 此快照首次捕获于
- 2023/10/23 10:01 2 年前
- 此快照最后确认于
- 2023/11/03 10:13 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
register int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=(x<<3)+(x<<1)+(c^48);
c=getchar();
}
return x*f;
}
char a[15][15];
int n=10,mf=0,mc=0,fx,fy,cx,cy,cnt;
int flag=0;//judge次数
void judge(int m,int x,int y,bool fc)
{
flag++;
if(m==0)
if(a[x-1][y]!='*') x--;
else judge(1,x,y,fc);
if(m==1)
if(a[x][y+1]!='*') y++;
else judge(2,x,y,fc);
if(m==2)
if(a[x+1][y]!='*') x++;
else judge(3,x,y,fc);
if(m==3)
if(a[x][y-1]!='*') y--;
else judge(0,x,y,fc);
if(flag>=5){cout<<"0";exit(0);}
flag=0;
if(fc==0)
fx=x,fy=y,mf=m;
else cx=x,cy=y,mc=m;
cout<<fx<<' '<<fy<<' '<<cx<<' '<<cy<<' '<<fc<<endl;
}
void walk()
{
//farmer
if(mf==0) judge(0,fx,fy,0);
if(mf==1) judge(1,fx,fy,0);
if(mf==2) judge(2,fx,fy,0);
if(mf==3) judge(3,fx,fy,0);
//cow
if(mc==0) judge(0,cx,cy,1);
if(mc==1) judge(1,cx,cy,1);
if(mc==2) judge(2,cx,cy,1);
if(mc==3) judge(3,cx,cy,1);
if(fx==cx && fy==cy){cout<<cnt<<' '<<fx<<' '<<fy<<' '<<cx<<' '<<cy;exit(0);}
}
int main()
{
memset(a,'.',sizeof(a));
for(int i=0;i<=n+1;i++)
a[0][i]='*',a[i][0]='*',a[i][n+1]='*',a[n+1][i]='*';
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
if(a[i][j]=='F') fx=i,fy=j;
if(a[i][j]=='C') cx=i,cy=j;
}
cnt=1;
while(cnt<=160000)
{
walk();
//cout<<fx<<' '<<fy<<' '<<cx<<' '<<cy<<endl;
++cnt;
}
cout<<0;
return 0;
}
代码中的judge函数是用来判断农夫或奶牛在特定方向上是否可以移动,并进行相应的移动。该函数的参数m表示当前方向(0代表上、1代表右、2代表下、3代表左),x和y表示当前位置坐标,fc表示判断的是农夫还是奶牛(0代表农夫、1代表奶牛)。
walk函数是用来执行农夫和奶牛的移动操作。在函数内部,根据农夫和奶牛当前的方向(mf和mc)调用judge函数进行移动判断。
在main函数中,首先通过输入获取迷宫地图及农夫和奶牛的初始位置。然后通过一个循环,不断调用walk函数进行移动,直到农夫和奶牛相遇或经过了160,000次移动操作。如果农夫和奶牛相遇,则输出相遇时的步数和位置;否则输出0。
总体来说,这段代码实现了一个简单的迷宫游戏,通过逐步移动农夫和奶牛,寻找彼此的位置。每次移动后会判断是否相遇,直到相遇或达到最大移动次数为止
(chatgpt3.5分析的 没有问题)
然后这段代码运行了之后就一直输出1 6 1 4 1
1 6 1 3 1
1 7 1 3 0
1 6 1 3 0 这一组数字
回复
共 3 条回复,欢迎继续交流。
正在加载回复...