Day1 BFS算法的学习和训练
因为自己的原因,之前没有坚持做算法的相应学习,总是觉得太难就半途而废,真的算是一个遗憾了,所以现在开始,定一个30天入门学习算法计划。
我是根据《算法图解》的顺序进行安排的,自己对散列表和递归调用栈还算有点初步的了解,所以从图算法开始了,希望markdown能一直写下去,自己学习算法能一直坚持下去。
BFS给我的感觉是用于图的搜索算法。
看书的时候自己有这么几个疑问:
Q1:它是一个搜索算法,那么它计数是在哪记的?
Q2:C++的队列怎么快速创建?有哪些api?(因为只在数据结构对队列有所了解,感觉应该不可能手写结构体和函数吧0.0)
(hhhh萌新问题嘛)
这里有篇随笔感觉对我这种入门辣鸡的萌新很友好https://blog.csdn.net/jiange702/article/details/81365005
#include<iostream>
using namespace std;
#include<string>
#include<stdio.h>
#include<queue> //这里就解决了我的Q2问题,是直接用头文件引入就好啦
/*
*BFS算法的模板就大概是
1.创建队列
2.push头节点
3.循环
{
1.以队列不为空为条件
2.pop出头节点
3.根据题目条件进行判
4.push进头节点的子节点
}
*/
void BFS()
{
memset(visited, 0, sizeof(int));
queue<co> q;
co A;
A.x = 0;
A.y = 0;
visited[0][0] = 1;
zhen[0][0].x = 0;
zhen[0][0].y = 0;
q.push(A);
while(!q.empty())
{
co te = q.front();
q.pop(); //弹出队列
if(te.x==4 && te.y== 4)
{
return;
}
for(int i = 0; i < 4; i++)
{
int tx = te.x + xx[i];
int ty = te.y + yy[i];
if(tx<0 || ty<0 || tx>4 || ty>4 || visited[tx][ty]==1)
continue;
visited[tx][ty] = 1;
co child;
child.x = tx;
child.y = ty;
q.push(kao);
zhen[tx][ty].x = te.x;
zhen[tx][ty].y = te.y;//这里是记录子节点的来源坐标,是由于这个“迷宫”题目要求的坐标,但这里也可以改成zhen[tx][ty] = zhen[te.x][te.y] + 1;这里就解决了我Q1问题,可以记录最短路径数
}
}
}
今天的训练是LeetCode102 二叉树的层次遍历
代码如下:
class Solution {
public:
bool isSymmetric(TreeNode* root) {
queue<TreeNode*> q,p;
q.push(root);
p.push(root);
while(!q.empty() || !p.empty())
{
TreeNode* t1 = q.front();
q.pop();
TreeNode* t2 = p.front();
p.pop();
if(t1 == NULL && t2 == NULL) continue;
if(t1 == NULL || t2 == NULL) return false;
if(t1->val != t2->val) return false;
q.push(t1->left);
q.push(t1->right);
p.push(t2->right);
p.push(t2->left);
}
return true;
}
};
Day1 BFS算法的学习和训练的更多相关文章
- 【2018.07.30】(广度优先搜索算法/队列)学习BFS算法小记
一些BFS参考的博客: https://blog.csdn.net/ldx19980108/article/details/78641127 https://blog.csdn.net/u011437 ...
- AI佳作解读系列(一)——深度学习模型训练痛点及解决方法
1 模型训练基本步骤 进入了AI领域,学习了手写字识别等几个demo后,就会发现深度学习模型训练是十分关键和有挑战性的.选定了网络结构后,深度学习训练过程基本大同小异,一般分为如下几个步骤 定义算法公 ...
- BFS算法的优化 双向宽度优先搜索
双向宽度优先搜索 (Bidirectional BFS) 算法适用于如下的场景: 无向图 所有边的长度都为 1 或者长度都一样 同时给出了起点和终点 以上 3 个条件都满足的时候,可以使用双向宽度优先 ...
- [源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识
[源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 目录 [源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 0x00 摘要 0x01 分布式并 ...
- [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入
[源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入 目录 [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入 0x00 摘要 0 ...
- [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架
[源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 目录 [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 0x00 摘要 0x01 架构图 ...
- [源码解析] 深度学习分布式训练框架 horovod (8) --- on spark
[源码解析] 深度学习分布式训练框架 horovod (8) --- on spark 目录 [源码解析] 深度学习分布式训练框架 horovod (8) --- on spark 0x00 摘要 0 ...
- [源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构
[源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构 目录 [源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构 0x00 摘要 ...
- [源码解析] 深度学习分布式训练框架 horovod (16) --- 弹性训练之Worker生命周期
[源码解析] 深度学习分布式训练框架 horovod (16) --- 弹性训练之Worker生命周期 目录 [源码解析] 深度学习分布式训练框架 horovod (16) --- 弹性训练之Work ...
随机推荐
- LeetCode(171) Excel Sheet Column Number
题目 Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, re ...
- POJ 4118 开餐馆
Description 北大信息学院的同学小明毕业之后打算创业开餐馆.现在共有n 个地点可供选择.小明打算从中选择合适的位置开设一些餐馆.这 n 个地点排列在同一条直线上.我们用一个整数序列m1, m ...
- Sticky footer经典布局--绝对底部布局
原文转载于:https://cnodejs.org/topic/56ebdf2db705742136388f71 何为Sticky footer布局? 我们常见的网页布局方式一般分为header(页头 ...
- js作用域的几个问题
按照<权威指南>的说法,全局的变量作用域是全局性的,在js代码中,他处处都有定义.而在函数之内声明的变量,就只有在函数体内有定义了.函数的参数也是局部变量,他们只在函数体内部有定义.在函数 ...
- python025 Python3 正则表达式
Python3 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. ...
- POJ-1067取石子游戏,威佐夫博弈范例题/NYOJ-161,主要在于这个黄金公式~~
取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取 ...
- bzoj5090组题 分数规划
组题 Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 542 Solved: 114[Submit][Status][Discuss] Descript ...
- JPA框架下使用纯粹的原生SQL
最近遇到一个需求,查询数据库中对应表的字段是动态的,项目使用的框架使用JPA+Spring Boot,JPA自带原生SQL支持的传入参数是强类型的,无法用于查询语句的字段更改,因为插入字符串的话带有单 ...
- j_spring_security_check 404错误
折腾了好久,还是写一篇备忘 折腾了好久,还是写一篇备忘 首先检查路径 <form class="form-signin" method="POST" ac ...
- hihoCoder #1055 : 刷油漆 [ 树形dp ]
传送门 结果:Accepted 提交时间:2015-05-11 10:36:08 #1055 : 刷油漆 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到 ...