fzu 2150 Fire Game(两点同时bfs)

本文介绍了一个草地燃烧问题的解决方法,通过使用广度优先搜索(BFS)算法来模拟两个点同时点燃草地的过程,并判断是否能在限定时间内将所有草地烧完。文章提供了完整的C++实现代码。

 

 

http://acm.fzu.edu.cn/problem.php?pid=2150

 

题目大意:烧草地,两个人同时点燃两块草地,火会向四个方向蔓延,问能否将草地全部烧完。(用Visual c++提交会超时,用GUN c++提交)

 

 

#include<iostream>
#include<queue>
using namespace std;
#define N 12
char map[N][N];
int n,m,s;
struct Node
{
	int x,y,v;
};
bool bound(int x,int y)
{
	if(x>=0&&x<n&&y>=0&&y<m&&map[x][y]=='#')
		return true;
	return false;
}
void bfs(int a,int b,int c,int d,int cnt)
{
	int i,j,vis[N][N],dir[][2]={0,1,0,-1,1,0,-1,0};
	memset(vis,0,sizeof(vis));
	Node cur;
	queue<Node> q;
	cur.x=a;
	cur.y=b;
	cur.v=0;
	q.push(cur);
	cur.x=c;
	cur.y=d;
	cur.v=0;
	q.push(cur);
	vis[a][b]=vis[c][d]=1;
	cnt-=2;
	while(!q.empty())
	{
		for(i=0;i<4;i++)
		{
			cur.x=q.front().x+dir[i][0];
			cur.y=q.front().y+dir[i][1];
			if(!vis[cur.x][cur.y]&&bound(cur.x,cur.y))
			{
				cur.v=q.front().v+1;
				q.push(cur);
				vis[cur.x][cur.y]=1;
				cnt--;
			}
		}
		q.pop();
	}
	if(cnt==0)
	{
		if(cur.v<s)//若烧完取用时少的
			s=cur.v;
	}
}
int main()
{
	int i,j,t,k,l,h,cnt;
	scanf("%d",&t);
	for(h=1;h<=t;h++)
	{
		scanf("%d%d%*c",&n,&m);
		s=9999;
		cnt=0;
		for(i=0;i<n;i++)
		{
			scanf("%s",map[i]);
			for(j=0;j<m;j++)
			{
				if(map[i][j]=='#')
					cnt++;//草地个数
			}
		}
		if(cnt<=2)//若草地个数少于3,则肯定能烧完
		{
			printf("Case %d: 0\n",h);
			continue;
		}
		for(i=0;i<n;i++)
			for(j=0;j<m;j++)
			{
				if(map[i][j]=='#')//枚举第一个点
				{
					for(k=i;k<n;k++)
						for(l=(k==i?j+1:0);l<m;l++)
							if(map[k][l]=='#')//枚举第二个点
								bfs(i,j,k,l,cnt);//两点同时bfs
				}
			}
			printf("Case %d: ",h);
			if(s==9999)//代表烧不完
				printf("-1\n");
			else
				printf("%d\n",s);
	}
	return 0;
}


 

先展示下效果 https://pan.quark.cn/s/e81b877737c1 Node.js 是一种基于 Chrome V8 引擎的 JavaScript 执行环境,它使开发者能够在服务器端执行 JavaScript 编程,显著促进了全栈开发的应用普及。 在 Node.js 的开发流程中,`node_modules` 文件夹用于存储所有依赖的模块,随着项目的进展,该文件夹可能会变得异常庞大,其中包含了众多可能已不再需要的文件和文件夹,这不仅会消耗大量的硬盘空间,还可能减慢项目的加载时间。 `ModClean 2.0` 正是为了应对这一挑战而设计的工具。 `ModClean` 是一款用于清理 `node_modules` 的软件,其核心功能是移除那些不再被使用的文件和文件夹,从而确保项目的整洁性和运行效率。 `ModClean 2.0` 是此工具的改进版本,在原有功能上增加了更多特性,从而提高了清理工作的效率和精确度。 在 `ModClean 2.0` 中,用户可以设置清理规则,例如排除特定的模块或文件类型,以防止误删重要文件。 该工具通常会保留项目所依赖的核心模块,但会移除测试、文档、示例代码等非运行时必需的部分。 通过这种方式,`ModClean` 能够协助开发者优化项目结构,减少不必要的依赖,加快项目的构建速度。 使用 `ModClean` 的步骤大致如下:1. 需要先安装 `ModClean`,在项目的根目录中执行以下命令: ``` npm install modclean -g ```2. 创建配置文件 `.modcleanrc.json` 或 `.modcleanrc.js`,设定希望清理的规则。 比如,可能需要忽略 `LICENSE` 文件或整个 `docs`...
2026最新微信在线AI客服系统源码 微信客服AI系统是一款基于PHP开发的智能客服解决方案,完美集成企业微信客服,为企业提供7×24小时智能客服服务。系统支持文本对话、图片分析、视频分析等多种交互方式,并具备完善的对话管理、人工转接、咨询提醒等高级功能。 核心功能 ### 1.  智能AI客服 #### 自动回复 - **上下文理解**:系统自动保存用户对话历史,AI能够理解上下文,提供连贯的对话体验 - **个性化配置**:可自定义系统提示词、最大输出长度等AI参数 #### 产品知识库集成 - **公司信息**:支持配置公司简介、官网、竞争对手等信息 - **产品列表**:可添加多个产品,包括产品名称、配置、价格、适用人群、特等 - **常见问题FAQ**:预设常见问题及答案,AI优先使用知识库内容回答 - **促销活动**:支持配置当前优惠活动,AI会自动向用户推荐 ### 2. 多媒体支持 #### 图片分析 - 支持用户发送图片,AI自动分析图片内容 - 可结合文字描述,提供更精准的分析结果 - 支持常见图片格式:JPG、PNG、GIF、WebP等 #### 视频分析 - 支持用户发送视频,AI自动分析视频内容 - 视频文件自动保存到服务器,提供公网访问 - 支持常见视频格式:MP4、等 ### 3.  人工客服转接 #### 关键词触发 - **自定义关键词**:可配置多个转人工触发关键词(如:人工、客服、转人工等) - **自动转接**:用户消息包含关键词时,自动转接给指定人工客服 - **友好提示**:转接前向用户发送提示消息,提升用户体验 #### 一键介入功能 - **后台管理**:管理员可在对话管理页面查看所有对话记录 - **快速转接**:击"一键介入"按钮,立即将用户转接给人工客服
全桥LLC谐振变换器,电压电流双环竞争控制策略带说明文档内容概要:本文档主要围绕全桥LLC谐振变换器展开,重介绍了一种电压电流双环竞争控制策略,并提供了详细的说明文档。该策略结合了拓展移相EPS方法,旨在优化电流应力并支持正反向运行,适用于双有源桥DC-DC变换器的控制。文中通过Simulink进行仿真研究,验证了控制策略的有效性,并利用PLECS工具进行了损耗计算和开环热仿真,确保系统在实际应用中的可靠性和效率。此外,文档还涵盖了DCDC双机并联系统的热管理问题,展示了完整的建模、仿真与分析流程。; 适合人群:具备电力电子、自动化或电气工程背景,熟悉MATLAB/Simulink和PLECS仿真工具,从事电源变换器设计与控制研究的研发人员及高校研究生。; 使用场景及目标:①用于高性能DC-DC变换器的设计与优化,特别是在新能源、电动汽车、储能系统等需要高效能电源转换的场合;②为研究人员提供电压电流双闭环控制、移相控制策略、损耗分析与热仿真的一体化解决方案,提升系统效率与稳定性;③支持正反向功率流动的应用场景,如能量回馈系统。; 阅读建议:建议读者结合Simulink与PLECS仿真模型同步学习,重关注控制策略的实现逻辑、参数整定方法及热仿真设置,动手复现仿真案例以深入理解系统动态特性与工程实用性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值