​ 因为自己的原因,之前没有坚持做算法的相应学习,总是觉得太难就半途而废,真的算是一个遗憾了,所以现在开始,定一个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算法的学习和训练的更多相关文章

  1. 【2018.07.30】(广度优先搜索算法/队列)学习BFS算法小记

    一些BFS参考的博客: https://blog.csdn.net/ldx19980108/article/details/78641127 https://blog.csdn.net/u011437 ...

  2. AI佳作解读系列(一)——深度学习模型训练痛点及解决方法

    1 模型训练基本步骤 进入了AI领域,学习了手写字识别等几个demo后,就会发现深度学习模型训练是十分关键和有挑战性的.选定了网络结构后,深度学习训练过程基本大同小异,一般分为如下几个步骤 定义算法公 ...

  3. BFS算法的优化 双向宽度优先搜索

    双向宽度优先搜索 (Bidirectional BFS) 算法适用于如下的场景: 无向图 所有边的长度都为 1 或者长度都一样 同时给出了起点和终点 以上 3 个条件都满足的时候,可以使用双向宽度优先 ...

  4. [源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识

    [源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 目录 [源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 0x00 摘要 0x01 分布式并 ...

  5. [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入

    [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入 目录 [源码解析] 深度学习分布式训练框架 horovod (2) --- 从使用者角度切入 0x00 摘要 0 ...

  6. [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架

    [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 目录 [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 0x00 摘要 0x01 架构图 ...

  7. [源码解析] 深度学习分布式训练框架 horovod (8) --- on spark

    [源码解析] 深度学习分布式训练框架 horovod (8) --- on spark 目录 [源码解析] 深度学习分布式训练框架 horovod (8) --- on spark 0x00 摘要 0 ...

  8. [源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构

    [源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构 目录 [源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构 0x00 摘要 ...

  9. [源码解析] 深度学习分布式训练框架 horovod (16) --- 弹性训练之Worker生命周期

    [源码解析] 深度学习分布式训练框架 horovod (16) --- 弹性训练之Worker生命周期 目录 [源码解析] 深度学习分布式训练框架 horovod (16) --- 弹性训练之Work ...

随机推荐

  1. XHR2:js异步上传

    http://dev.opera.com/articles/xhr2/ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2 ...

  2. zoj 1109 Language of FatMouse(map)

    Language of FatMouse Time Limit: 10 Seconds      Memory Limit: 32768 KB We all know that FatMouse do ...

  3. MacOS & iOS

    MacOS & iOS https://github.com/qinjx/30min_guides/blob/master/ios.md https://www.cnblogs.com/xgq ...

  4. POJ 3090 坐标系上的视线遮蔽问题

    Description A lattice point (x, y) in the first quadrant (x and y are integers greater than or equal ...

  5. Mysql的常见几种错误:1045,1044

    Mysql的常见几种错误: 一.在进入 mysql 数据库时出错   # mysql -u root -p Enter password: ERROR 1045 (28000): Access den ...

  6. hdu 5195 DZY Loves Topological Sorting BestCoder Round #35 1002 [ 拓扑排序 + 优先队列 || 线段树 ]

    传送门 DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131 ...

  7. as3 二维数组的定义

    大家都知道as3里面是不能直接定义多维数组 所以不能直接用arr[2][3]这样的方法来获取数组里面的值.如何才能创立多维数组了? 方法如下先定义一个数组 var MapData:Array=new ...

  8. Codeforces 653C Bear and Up-Down【暴力】

    题目链接: http://codeforces.com/problemset/problem/653/C 题意: 给定序列,偶数位的数字比两边都大,则成为nice,只可以交换两个数字,问有多少种交换方 ...

  9. Pick-up sticks--poj2653(判断两线段是否相交)

    http://poj.org/problem?id=2653 题目大意:有n根各种长度的棍   一同洒在地上 求在最上面的棍子有那几个 分析:  我刚开始想倒着遍历  因为n是100000   想着会 ...

  10. python 爬虫(转,我使用的python3)

      原文地址:http://blog.csdn.net/pi9nc/article/details/9734437 [Python]网络爬虫(一):抓取网页的含义和URL基本构成 分类: 爬虫 Pyt ...