section 2.4.1 ttwo

该博客探讨了一种处理两个对象相遇时间的方法。通过创建一个子函数计算每个对象的下一个位置,利用结构体存储坐标和方向信息。文章指出,存在不相遇的情况,如无限循环或布朗运动式的随机移动。为解决这个问题,提出了设定一个最大时间限制,当超过这个时间,认为两者不会相遇。附带了相应的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这道题是要求两者相遇的时间。总共就四个方向,而且一个方向接着另一个方向,可以用一个子函数来求某一点的下一个位置,并用结构体将点坐标以及方向,是否变向存放起来。但是会有不相遇的情况,不相遇有多种情况,可以是两者会经过他们的初始点然后一直绕圈子,那就判断一下两者经过多次的绕圈是否会在同一时间经过他们的初始点;或者是不经过初始点进行绕圈,或者是像布朗运动一样乱走,但是两者就不相遇。所以最简单的方法就可以设置一个最大值,当时间一旦大于这个最大值,就认为两者不相遇。代码如下。

#include<bits/stdc++.h>
#define maxn 160000
using namespace std;
struct name{
	int x;
	int y;
	int loca;
	bool cha;
}name;
int ori[15][15];
struct name next(int x,int y,int loca){
	struct name re;
	re.cha=false;
	re.x=x;
	re.y=y;
	re.loca=loca;
	if (loca==1){
		if ((ori[x-1][y])||x==1){
			re.loca=2;
			re.cha=true;
		}
		else re.x-=1;
	}
	else if (loca==2){
		if ((ori[x][y+1])||y==10){
			re.loca=3;
			re.cha=true;
		}
		else re.y+=1;
	}
	else if (loca==3){
		if ((ori[x+1][y]||x==10)){
			re.loca=4;
			re.cha=true;
		}
		else re.x+=1;
	}
	else {
		if ((ori[x][y-1])||y==1){
			re.loca=1;
			re.cha=true;
		}
		else re.y-=1;
	}
	return re;
}
int main (){
	freopen ("ttwo.in","r",stdin);
	freopen ("ttwo.out","w",stdout);
	struct name ansc;
	struct name ansf;
	ansc.loca=1;
	ansc.cha=false;
	ansf.loca=1;
	ansf.cha=false;
	memset(ori,0,sizeof(ori));
	int xc=0,xf=0,yc=0,yf=0,cnt=0;
	char in=' ';
	for (int i=1;i<=10;i++){
		for (int j=1;j<=10;j++){
			cin>>in;
			if (in=='*'){
				ori[i][j]=1;
			}
			else if (in=='C'){
				ansc.x=i;
				ansc.y=j;
			}
			else if (in=='F'){
				ansf.x=i;
				ansf.y=j;
			}
		}
	}
	bool flag=false;
	while (!flag){
		ansc=next(ansc.x,ansc.y,ansc.loca);
		ansf=next(ansf.x,ansf.y,ansf.loca);
		if (ansc.x==ansf.x&&ansc.y==ansf.y){
			cout<<(cnt+1)<<endl;
			flag=true;
		}
		cnt++;
		if (cnt>maxn){
			cout<<0<<endl;
			flag=true;
		}
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值