9.点火游戏(简单搜索 BFS)
1.1.棋盘问题(简单搜索 DFS)2.2.地牢大师(简单搜索 三维BFS)3.3.抓住那头牛(简单搜索 一维BFS)4.4.翻转(简单搜索 枚举)5.5.找倍数(简单搜索 BFS)6.6.质数路径(简单搜索 BFS)7.7.洗牌(简单搜索 BFS)8.8.罐子(简单搜索 BFS最短步数+记录方案)
9.9.点火游戏(简单搜索 BFS)
10.10.起火迷宫(简单搜索 多源BFS)11.11.迷宫问题(简单搜索 BFS 储存路径)12.12.石油储备(简单搜索 DFS/BFS 统计连通块个数)13.13.非常可乐(简单搜索 BFS)14.14.找路(简单搜索 BFS 最短步数)15.1.八数码 (搜索进阶 BFS)16.2.八数码II(搜索进阶 IDA*估价函数 + 迭代加深)点火游戏
↑ 题目链接
题目
给定一个
注意,空地方格无论如何都不可能被点燃。
现在,你可以选择最多两个草地,将它们点燃。
请你计算,使得所有草地都被点燃所需花费的最少时间。
输入格式
第一行包含整数
每组数据第一行包含两个整数
接下来 #
表示草地,.
表示空地。
输出格式
每组数据输出一个结果,每个结果占一行。
结果表示为 Case x: y
,其中 −1
数据范围
输入样例:
5
3 3
.#.
###
.#.
3 3
.#.
#.#
.#.
3 3
...
#.#
...
3 3
###
..#
#.#
3 3
...
...
...
输出样例:
Case 1: 1
Case 2: -1
Case 3: 0
Case 4: 2
Case 5: -1
思路
枚举两个起点入队,在
代码
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
const int N=15;
char g[N][N];
int d[N][N];
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
int n,m;
int cnt;
int maxv;
void bfs(int sx1,int sy1,int sx2,int sy2)
{
memset(d,-1,sizeof d);
queue<PII>q;
q.push({sx1,sy1});
q.push({sx2,sy2});
d[sx1][sy1]=0;
d[sx2][sy2]=0;
while(q.size())
{
auto t=q.front();
q.pop();
cnt++;//统计草地个数
for(int i=0;i<4;i++)
{
int a=t.x+dx[i],b=t.y+dy[i];
if(a<0||a>=n||b<0||b>=m||d[a][b]!=-1||g[a][b]=='.')continue;
d[a][b]=d[t.x][t.y]+1;
maxv=max(d[a][b],maxv);//每次搜索取距离最大值
q.push({a,b});
}
}
}
int main()
{
int T;
cin>>T;
for(int Case=1;Case<=T;Case++)
{
cin>>n>>m;
vector<PII>grass;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
cin>>g[i][j];
if(g[i][j]=='#')grass.push_back({i,j});
}
int res=1e9;
if(grass.size()==1)res=0;//特判草地数量为1
//枚举两块草地
for(int i=0;i<grass.size();i++)
for(int j=i+1;j<grass.size();j++)
{
int sx1=grass[i].first,sy1=grass[i].second;
int sx2=grass[j].first,sy2=grass[j].second;
cnt=0,maxv=0;
bfs(sx1,sy1,sx2,sy2);
if(cnt==grass.size())
res=min(res,maxv);//所有情况取最小值
}
if(res==1e9)res=-1;
printf("Case %d: %d\n",Case,res);
}
return 0;
}
本文来自博客园,作者:风雨zzm,转载请注明原文链接:https://www.cnblogs.com/zzmxj/p/17368053.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)