L1141(bfs思想)
一,看
1,整个方格图其实可以看做是一些不连通的图。
当然图内部必然是联通的。
2,遍历的技巧没什么。
方格图入队的技巧。。额,是这样的
int gtid(int x,int y)
{ return x*m+y-1;}
*这个函数可以把二维点对压成一维。
*解压时只需要x=id/n,y=id%n+1;
原理是》?
噢。。首先你是在bfs,得用队列。。
所以有这么一出。其实你也可以用结构体,但是它说结构体
不够优美。。
函数的全称是get_id.
3,还有骚的操作
(x-1)*m+y-1;
听说这样一个3×3的表格就是从0,1,2,3,4,5,6,7,8
这样,挺秀的。
4,它的代码结构化挺好的,看起来挺高级的
①,入队,标示区域
②,队列出元素,检查是否在地图内
③,这个判断的话,我觉得一个和标记有关,一个和区域有关
染色深入递归
二,题解
1,这个标示队列的使用方法。。queue<pair<int ,int>>q;
还是听那人的比较好,全用手写~2
2,这也太难看了把。
3,重点看的是答案从何而来。
4,bfs只是一种思想,并非必须这样。
三,写题
1,bfs只是一种枚举的思想。而非很固定的一个东西。
四,完美写一遍
1,必须每次都得不看得写一遍。
2,在于标记函数,标记是否走过
颜色函数,每几个点是否在一个联通图中,
L1141(bfs思想)的更多相关文章
- BFS与DFS
DFS:使用栈保存未被检测的结点,结点按照深度优先的次序被访问并依次被压入栈中,并以相反的次序出栈进行新的检测. 类似于树的先根遍历深搜例子:走迷宫,你没有办法用分身术来站在每个走过的位置.不撞南山不 ...
- BFS与DFS总结
最近一直在看DFS和BFS,感觉要晕的GJ. DFS思想: 一直往深处走,直到找到解或者走不下去为止 DFS框架: DFS(dep,-) //dep代表目前DFS的深度 { if (找到 ...
- 算法与数据结构基础 - 广度优先搜索(BFS)
BFS基础 广度优先搜索(Breadth First Search)用于按离始节点距离.由近到远渐次访问图的节点,可视化BFS 通常使用队列(queue)结构模拟BFS过程,关于queue见:算法与数 ...
- 搜索(BFS)---计算在网格中从原点到特定点的最短路径长度
计算在网格中从原点到特定点的最短路径长度 [[1,1,0,1], [1,0,1,0], [1,1,1,1], [1,0,1,1]] 题目描述: 1表示可以经过某个地方,求解从(0,0)位置到(tr,t ...
- word-ladder总结
title: word ladder总结 categories: LeetCode tags: 算法 LeetCode comments: true date: 2016-10-16 09:42:30 ...
- 二叉树的层次遍历(Java代码实现)
与树的前中后序遍历的DFS思想不同,层次遍历用到的是BFS思想.一般DFS用递归去实现(也可以用栈实现),BFS需要用队列去实现. 层次遍历的步骤是: 1.对于不为空的结点,先把该结点加入到队列中 2 ...
- PAT甲级——1094 The Largest Generation (树的遍历)
本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/93311728 1094 The Largest Generati ...
- BFS-迷宫问题
问题描述 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ...
- java之数据结构与算法
1.了解基本数据结构及特点 如,有哪些二叉树,各有什么特点 树二叉搜索树 每个节点都包含一个值,每个节点至多有两棵子树,左孩子小于自己,右孩子大于自己,时间复杂度是O(log(n)),随着不断插入节点 ...
随机推荐
- [BZOJ4382][POI2015]Podział naszyjnika (神奇HASH)
[问题描述] 长度为n 的一串项链,每颗珠子是K 种颜色之一.第i 颗与第i-1,i+1 颗珠子相邻,第n 颗与第1 颗也相邻. 切两刀,把项链断成两条链.要求每种颜色的珠子只能出现在其中 ...
- C# 截取字符串方法总结
第一种:根据单个分隔字符用split截取 string st="GT123_1"; string[] sArray=st.split("_"); //即可得到s ...
- [個人紀錄] WindowsLiveWriter 插入代碼跳出錯誤
跳出找不到設定檔Can’t load configruaration fromC:\Users\…\AppData\Roaming\Windows Live Writer\WindowsLiveWri ...
- Java自学-数组 初始化数组
Java 如何初始化数组 步骤 1 : 分配空间与赋值分步进行 public class HelloWorld { public static void main(String[] args) { i ...
- Linux系统怎么分区
linux分区方法,不同的人有不同的方法,反正没有统一的方法.在分区方面,我觉得根据自己的实际情况来分是最好的.玩linux也有好几年了,下面说一下,我在分区方面的一些经验. 一,个人用 如果是个人用 ...
- .python3基础之“术语表(1)”
1.注释: 行首有一特殊标志符号运行时告知编程忽略此行:使代码更易于阅读. 例如: #这是一个注释 print("hello world") #print() 方法用于打印输出,p ...
- Java 之 cookie 记住用户登录时间案例
需求: 1. 访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问. 2. 如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串 分析: 1. 可以采用Cookie ...
- Android为TV端助力之查找当前界面焦点所在位置
View rootview = this.getWindow().getDecorView(); int focusId = rootview.findFocus().getId(); Log.i(T ...
- Java 读取控制台输入
方式1:InputStreamReader+BufferedReader package my_package; import java.io.BufferedReader; import java. ...
- Pod和Namespace的基本介绍
namespace资源名称空间 删除namespace资源会级联删除其所包含的所有其它资源对象 名称空间仅仅只是用来限制资源名称的作用域 并不能实现Pod的通信隔离 在名称空间下操作s ...