社区讨论

萌新求调(样例没过)

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 条回复,欢迎继续交流。

正在加载回复...