I - Fire Game
https://vjudge.net/contest/65959#problem/I
代码暂时有问题,所以暂时不要看
题目大意
一块地上面有草和空地,有两个人想要把草烧光,这样他俩就可以开心的OOXX,他俩都要在一块地上放火(每人只能放一次),可以在相同或者不同的位置放,火可以向四周蔓延,蔓延一次话费1分钟,问他俩把这块地上草烧完所用到的最小时间。
解题思路
这个思路是我看一个大神的,感觉很好,就是将两人所能放火的位置都试一遍,比较得出所用最短的时间,具体用的是一个结构体数组将所有有草的位置全都记录下来,然后对它两两进行所有组合进行BFS。求出它们各自所花费的时间。
代码
# include<stdio.h>
# include <queue>
# include <string.h>using namespace std;
# define max 11struct node
{int x, y, step;
}v[105];char num[max][max];
int dir[4][2] = {{1,0},{-1,0}, {0,1}, {0,-1}};//四个方向
int T, m, n;
int array[max][max];int PAN()
{int i, j;for(i = 0; i<n; i++)for(j = 0; j<m; j++){if(num[i][j] == '#' && array[i][j] == 0)//判断又没用将草烧完,,array[i][j] = 0时代表草没有烧 {return 0;}}return 1;
}int BFS( node s, node q )
{queue<node>Q;Q.push(s);Q.push(q);array[s.x][s.y] = array[q.x][q.y] = 1;//标记起始位置已经烧过 while(Q.size()){s = Q.front();Q.pop();for(int i = 0 ;i<4; i++){q = s;q.x +=dir[i][0];q.y +=dir[i][1];if(q.x>=0 && q.x<m && q.y >=0 && q.y<n && array[q.x][q.y] == 0 && num[q.x][q.y] == '#'){q.step +=1;array[q.x][q.y] = 1;Q.push(q);}}}return s.step;
}int main(void)
{int i,j, k,t;scanf("%d",&T);for(i = 1; i<=T; i++){t = 0;int ans = 99999;scanf("%d%d",&n,&m);for(j = 0; j<n; j++){scanf("%s",num[j]);for(k = 0; k<m; k++){if(num[j][k] == '#'){v[t].x = j;v[t].step = 0;v[t++].y = k;}}} for(j = 0; j<t; j++)//求出任意两个位置最少话费的时间 {for(k = j; k<t; k++){memset(array, 0, sizeof(array));int l = BFS(v[j], v[k]);if(l<ans && PAN()){ans = l;}}}if(ans == 99999){printf("Case %d: -1\n",i);}else{printf("Case %d: %d\n",i, ans);}} return 0;
}
I - Fire Game相关推荐
- fzu 2150 Fire Game 【身手BFS】
称号:fzu 2150 Fire Game :给出一个m*n的图,'#'表示草坪,' . '表示空地,然后能够选择在随意的两个草坪格子点火.火每 1 s会向周围四个格子扩散,问选择那两个点使得燃烧全部 ...
- fire.php,Fire PHP
项目介绍: Fire PHP 是基于 PHP JavaScript开发的跨平台的Firefox 的扩充套件,即PHP调试插件,可以帮你debug 后端PHP 的程式,其使用的技术跟某些IDE 一样,要 ...
- ZOJ1002 Fire Net(非递归版)
以前用递归的回溯搜索思路做过一次,参见ZOJ1002 Fire Net(递归版),今天想着用非递归的方法试试看,呵呵,比我想象中要难啊,主要还是堆栈里究竟放什么,这一点上思路一直没理清.因此用了整整一 ...
- UVA11624 Fire!(bfs)
相信大家已经读过题目了,我就搬一下洛谷的翻译: 题目大意 你的任务是帮助Joe走出一个大火蔓延的迷宫.Joe每分钟可以走到上下左右4个方向的相邻格子之一,而所有着火的格子都会四周蔓延(即如果某个空格子 ...
- J - Fire! UVA - 11624
J - Fire! UVA - 11624 题意:火每次能烧到上下左右,人碰到非墙的边界则逃火成功,求最短的逃离时间. 由于bfs每个位置最多入队出队一次,所以复杂度为 1e6 一发bfs直接TLE, ...
- 1709: Fire or Retreat(zzuli)
水题,哎,可是第一次是因为编译错了,vs不知咋了,无奈: 后面几次又因为类型用了int错了,痛苦: 题目描述 在与科技水平远胜于我们的外星人的战斗最后,我们能够用来对外星装甲造成伤害的武器只剩下了-- ...
- xmpp 服务器配置 open fire for windows 及 spark 测试
xmpp 服务器配置 open fire for windows 此文章为 XMPP windows服务器配置,使用的是 open fire 3.9.1.exe 1: 下载 open fire ope ...
- python3 命令行参数处理库 argparse、docopt、click、fire 简介
一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse.docopt.click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变. 本文作 ...
- Fire Workflow FAQ
Fire Workflow 的Eclispe设计器插件上传到google code ,并有较详细的文档(2_通过设计器和模拟器快速了解Fire Workflow.pdf,3_各种工作流模式 ...
- UVA11624 Fire!
题目: 乔在迷宫中工作.不幸的是,迷宫的一部分着火了,迷宫的主人没有制定火灾的逃跑计划.请帮助乔逃离迷宫.根据乔在迷宫中的位置以及迷宫的哪个方块着火,你必须确定火焰烧到他之前,乔是否可以离开迷宫,如果 ...
最新文章
- 20172318 2016-2017-2 《Java程序设计》第一周学习总结
- 深入Managed DirectX9(四)
- MySQL高级in和not in
- Jmeter远程测试
- Android官方开发文档Training系列课程中文版:分享简单数据之发送简单数据给其它APP
- ubuntu不锁屏设置
- java 定时关机_java实现电脑定时关机的方法
- 网站建设基本流程,要注意什么?
- Java毕设项目-社区居民健康档案管理系统
- 数学建模-SARS疫情对某些经济指标影响例题
- python爬取网页数据步骤_如何轻松爬取网页数据?
- MyExcel 2.1.3 发布,提供行级读取处理能力
- mysql idb 恢复_mysql靠idb文件恢复数据
- 北邮校长方滨兴将离职 临别奉送学生“六好”锦囊
- 蓝牙耳机蓝牙音箱出口加拿大亚马逊ICID认证周期费用
- 使用 Keras 进行面部表情识别
- 嵌入式图形解决方案升级!RT-Thread Smart成功支持ARM Mali GPU
- macos各版本汇总
- 硬件常见问题——信号过冲
- 唱响艾泽拉斯_职业篇