P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two

P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two 摘要:题目模拟农夫John和两头牛在10×10网格中的追逐过程。双方初始方向为北,每分钟按规则移动:若能前进则移动,否则顺时针转向90度。相遇时输出时间,若状态重复或超过100000分钟未相遇则输出0。代码使用六维数组记录状态,通过方向数组控制移动,检测相遇和状态重复来终止模拟。 阅读详情

得到几个重要信息:

  1. 农夫和牛每分钟内的行动方式都是:前方有障碍,顺时针旋转90°,前方无障碍,前进一步。
  2. 农夫和牛同时运动,并且具有方向。
  3. 地图边缘也属于障碍物。
  • 代码构思

模拟思路:用二维数组记录整张图,为防止越界同时让代码简短,把字符放在Farm[1][1]到Farm[10][10]里。用四个个变量记录农夫和牛的位置。每次只要对这些变量做出改变就行。

方向问题:农夫和牛都具有四个方向(向北,东,南,西),分别用数值1,2,3,4来代表四个方向。

1对北,2对东,3对南,4对西,这样对应是为了方便做拐弯(顺时针90°),用变量flag存储数值,如果遇到障碍就(flag=flag%4+1)实现1变2,2变3,3变4,4变1。

相遇问题:农夫和牛在图中最多各有400种状态(100个位置,每个位置有四个方向),也就是一张图最多出现400*400种情况,如果经过400*400分钟仍未相遇,就不能相遇。也可以设置一个很大的值当做临界点当做判断是否相遇的条件。

代码实现

#include<iostream>
using namespace std;
struct direction {
	int x;
	int y;
};//定义结构体记录牛和农夫位置(也可以不用结构体直接上四个变量)
direction farmer = { 0 }, cow = { 0 };//一牛一农夫
int main()
{
	int time = 0;
	int cowflag = 1, farmerflag = 1;//牛和农夫的方向,初始都向北,值为一
	char Farm[12][12] = { 0 };
	char c = '0';
	for (int i = 1; i <= 10; i++)
	{
		scanf("%s", Farm[i]+1);//存储到Farm[i][1——10]
		c = getchar();//防止读入空格
	}
	for (int i = 1; i <= 10; i++)//遍历找出牛和农夫的位置
	{
		for (int j = 1; j <= 10; j++)
		{
			if (Farm[i][j] == 'C')
			{
				cow.x = i; cow.y = j;
				Farm[i][j] = '.';//找到后可以把该位置置为空地
			}
			else if (Farm[i][j] == 'F')
			{
				farmer.x = i; farmer.y = j;
				Farm[i][j] = '.';//同理
			}
		}
	}
	for (time = 1; time <= 160000; time++)//模拟行动
	{
		//先判断方向并判断前方是不是空地'.'是的话可以向前走一步,否则拐弯
		//先写牛和农夫先后顺序随意
		if (cowflag == 1 && Farm[cow.x - 1][cow.y] == '.')cow.x--;
		else if (cowflag == 2 && Farm[cow.x][cow.y + 1] == '.')cow.y++;
		else if (cowflag == 3 && Farm[cow.x + 1][cow.y] == '.')cow.x++;
		else if (cowflag == 4 && Farm[cow.x][cow.y - 1] == '.')cow.y--;
		else cowflag = cowflag % 4 + 1;//拐弯
		if (farmerflag == 1 && Farm[farmer.x - 1][farmer.y] == '.')farmer.x--;
		else if (farmerflag == 2 && Farm[farmer.x][farmer.y + 1] == '.')farmer.y++;
		else if (farmerflag == 3 && Farm[farmer.x + 1][farmer.y] == '.')farmer.x++;
		else if (farmerflag == 4 && Farm[farmer.x][farmer.y - 1] == '.')farmer.y--;
		else farmerflag = farmerflag % 4 + 1;//同理
		if (farmer.x == cow.x && farmer.y == cow.y)break;//每次走完判断是否位置相同
	}
	if (time == 160001)printf("0");//经过160000后仍未相遇(160001是因为完整走完循环time++)
	else printf("%d", time);
	return 0;//完结撒花
}

PR控制以及使用PR控制用于单相离/并网逆变器 最近想学习一下并网逆变器,需要用到PR控制,全网找遍了许多学习资料,终于掌握的差不多了,在此做个记录,以及个人对PR(Proportional Resonant)控制的理解。在去年7月准备电赛的时候偶然看到有几篇讲解数字滤波器,第一次接触传递函数离散化,深刻被数字时代的数字方式折服,改改代码,就可以实现不同的截至频率,甚至不同阶数,而模拟方式还要改元器件。当时就感觉这玩意太他妈牛逼了,很想学懂它,奈何学不会呀。后面全身心做电赛,就忘了这事儿。直至最近学习PR控制,当初的感觉又回来了,一股劲儿吃下来了。 阅读详情

相关推荐

A Mathematical Framework for Transformer Circuits—(一)

transformer数学理解理论

qq_42208244的博客 2663

两只塔姆沃斯牛 The Tamworth Two(暴力)P1518 [USACO2.4]

原题链接 来自洛谷https://www.luogu.com.cn/problem/P1518 #include <bits/stdc++.h> using namespace std; int num[15][15] = {0}; int Fx, Fy, Cx, Cy; // 坐标 int Ff[5][2] = {-1, 0, 0, 1, 1, 0, 0, -1}, Cf[5][2] = {-1, 0, 0, 1, 1, 0, 0, -1}; int main() { int i,.

jdklll的博客 674

无人机蜂群作战设计技术详解

构建防御网络,拦截敌方无人机或导弹;无人机蜂群作战设计技术是一种创新的军事应用概念,它基于生物仿生学原理,通过先进的通信技术、自主导航与决策算法,将大量小型、低成本、功能各异的无人机组织成一个高度协同的群体,以执行复杂多样的军事任务。无人机蜂群作战的概念源于自然界中蜜蜂、蚂蚁等生物群体的行为模式,这些生物群体通过简单的个体间的信息交互和分工协作,能够完成远远超出单一个体能力的复杂任务。其中,无人机群体是执行任务的主体,指挥控制系统负责任务分配和决策,通信数据链则保障无人机群体与指挥控制系统之间的信息交换。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 2216

洛谷P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two 题解 (C/C++)

主要思路如下 1 //P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two //#define LOCAL #include <iostream> #include <cstdio> using namespace std; char board[12][12];//本来10*10就够了,在外围加一层墙,好判断 int famr[3],cow[3];//分别存储人和牛的x,y坐标和方向 北为0,顺时针依次为东1,南2,西3 int readcha

止心的博客 1168

STM32F103ZET6驱动57闭环步进电机(连线+代码)

一、设备: 1. STM32F103开发板 (普中F103的板子) 2. 57闭环电机带驱动 3. 24V/3A的直流电源,用于给电机驱动供电 简单说明:使用Keil5编程,主要使用了PWM波,外部中断和时间中断,按键控制电机使能和脱机并且控制PWM的周期,调节周期即调节电机的转速。 二、STM32开发板与电机驱动的连线: 1.PUL-、ENA-、DIR-与STM32的连接方法: 可以参考CSND的这个链接中的说明,使用共阴极接法:STM32F407-用TB6600驱动器驱动57步进电机(代码

baidu_39071234的博客 7430

小红书直播弹幕采集

本文主要介绍小红书直播间弹幕的采集,便于进行直播数据监控与直播数据进行分析。

tdl320721的博客 2541

P1518 两只塔姆沃斯牛 The Tamworth Two

https://www.luogu.org/problemnew/show/P1518 思路一: #include&lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; typedef pair&lt;ll ,ll &gt; P; #define INF 0xf3f3f3f const int Max=10000+10...

PinkAir的博客 760

洛谷【代码】P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two

两只塔姆沃斯牛 The Tamworth Two 题解

2402_82407025的博客 500

【2026最新版】Open3D(C++)点云处理算法汇总(C++长期更新版)

C++版本Open3D进行点云处理的一些算法使用案例。博客长期更新,最近一次更新时间为:2026年4月11日。

点云侠的博客 1万+

4、基于球面波展开的近场/远场变换技术解析

本文深入解析了基于球面波展开的近场/远场变换技术,涵盖坐标系统选择、截断测量处理、高级SWE方法及实际应用场景。重点介绍了广义SWE、全探头补偿、平移SNF测量(TSWE)等关键技术,结合吸收材料与导电地板系统的误差处理方案,系统总结了各类方法的优缺点与适用场景,并通过流程图和案例分析展示了技术应用路径。该技术在汽车、通信和航空航天领域的天线测量中具有重要价值,可显著提升测量效率与精度。

dell8的博客 256

[USACO2.4] 两只塔姆沃斯牛 The Tamworth Two--记忆化题解

[USACO2.4] 两只塔姆沃斯牛 The Tamworth Two## 题目描述两只牛逃跑到了森林里。Farmer John 开始用他的专家技术追捕这两头牛。你的任务是模拟他们的行为(牛和 John)。追击在 $10 \times 10$ 的平面网格内进行。一个格子可以是:一个障碍物,两头牛(它们总在一起),或者 Farmer John。两头牛和 Farmer John 可以在同一个格子内(当他们相遇时),但是他们都不能进入有障碍的格子。一个格子可以是:- `.` 空地;

Bright然的一些小记录 1842

AI游戏制作07——波次计时器,敌人按波次生成

AI游戏制作07——波次计时器,敌人按波次生成

qq_40572023的博客 47

洛谷之P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two

USACO2.4] 两只塔姆沃斯牛 The Tamworth Two。

2302_81099523的博客 1103

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

洛谷P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two

洛谷P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two 标签:简单模拟 难度:简单+(普及/提高-) 题目描述 两只牛逃跑到了森林里。Farmer John 开始用他的专家技术追捕这两头牛。你的任务是模拟他们的行为(牛和 John)。 追击在10×10 的平面网格内进行。一个格子可以是:一个障碍物,两头牛(它们总在一起),或者 Farmer John。两头牛和 Farmer John 可以在同一个格子内(当他们相遇时),但是他们都不能进入有障碍的格子。 一个格子可以是:

xujiaming0411的博客 632

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

洛谷P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two

洛谷P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two

shscsjsbk的博客 1530

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

洛谷P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two题解

题目描述 两只牛逃跑到了森林里。Farmer John 开始用他的专家技术追捕这两头牛。你的任务是模拟他们的行为(牛和 John)。 追击在10 \times 1010×10的平面网格内进行。一个格子可以是:一个障碍物,两头牛(它们总在一起),或者 Farmer John。两头牛和 Farmer John 可以在同一个格子内(当他们相遇时),但是他们都不能进入有障碍的格子。 一个格子可以是: .空地; *障碍物; C两头牛; FFarmer John。 这里有一个地图的例子: ...

jackson2248的博客 1118

java:P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two

洛谷题目:P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two 题目如下: 思路: 简单的模拟,不过像这种上下左右的移动方式倒是可以留意下,我是用%的方式来改变的。 我的代码 import java.io.*; public class Main { static char[][] chars = new char[10][10]; static int rx = 0,ry = 0; // 记录人的位置

小白成长记 1453

# P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two

题目模拟农夫John和两头牛在10×10网格地图上的移动过程。初始方向均为北,每分钟各自按照规则移动:若前方无障碍则前进,否则顺时针转向。移动后若在同一格子则追捕成功,输出所需时间;若1000分钟后仍未相遇则输出0。解法通过读取地图定位初始位置,使用方向数组模拟移动,设置1000次循环限制判断相遇情况。

2403_87483856的博客 721

洛谷P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two

个人觉得我的题解相比其他人的要简单许多(看到好多人写了一堆的if…else,不然就是6维数组) 此题解为我自己写的(已AC),如果有什么不太好的地方,可以说出来大家探讨一下。 >>题目入口<< 为了方便阅读我copy一下题目: 题目描述 两只牛逃跑到了森林里。Farmer John 开始用他的专家技术追捕这两头牛。你的任务是模拟他们的行为(牛和 John)。 追击在 10 \times 1010×10 的平面网格内进行。一个格子可以是:一个障碍物,两头牛(它们总在一起),或者 Far

weixin_48849401的博客 2843

洛谷 P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two

两只牛逃跑到了森林里。Farmer John 开始用他的专家技术追捕这两头牛。你的任务是模拟他们的行为(牛和 John)。追击在10×10的平面网格内进行。一个格子可以是:一个障碍物,两头牛(它们总在一起),或者 Farmer John。两头牛和 Farmer John 可以在同一个格子内(当他们相遇时),但是他们都不能进入有障碍的格子。CF牛在地图里以固定的方式游荡。每分钟,它们可以向前移动或是转弯。如果前方无障碍(地图边沿也是障碍),它们会按照原来的方向前进一步。

2301_80398020的博客 739

打卡信奥刷题(1022)用C++实现信奥 P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two

两只牛逃跑到了森林里。Farmer John 开始用他的专家技术追捕这两头牛。你的任务是模拟他们的行为(牛和 John)。追击在10×10的平面网格内进行。一个格子可以是:一个障碍物,两头牛(它们总在一起),或者 Farmer John。两头牛和 Farmer John 可以在同一个格子内(当他们相遇时),但是他们都不能进入有障碍的格子。CF牛在地图里以固定的方式游荡。每分钟,它们可以向前移动或是转弯。如果前方无障碍(地图边沿也是障碍),它们会按照原来的方向前进一步。

Loge谈信奥--一个专注于信奥人的博客 5574
下一篇: P1065 [NOIP2006 提高组] 作业调度方案
Study_Study_X
博客等级 码龄5年 11粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值