博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Day1 BFS算法的学习和训练
阅读量:7080 次
发布时间:2019-06-28

本文共 2114 字,大约阅读时间需要 7 分钟。

​ 因为自己的原因,之前没有坚持做算法的相应学习,总是觉得太难就半途而废,真的算是一个遗憾了,所以现在开始,定一个30天入门学习算法计划。

​ 我是根据《算法图解》的顺序进行安排的,自己对散列表和递归调用栈还算有点初步的了解,所以从图算法开始了,希望markdown能一直写下去,自己学习算法能一直坚持下去。

​ BFS给我的感觉是用于图的搜索算法。

​ 看书的时候自己有这么几个疑问:

Q1:它是一个搜索算法,那么它计数是在哪记的?

Q2:C++的队列怎么快速创建?有哪些api?(因为只在数据结构对队列有所了解,感觉应该不可能手写结构体和函数吧0.0)

(hhhh萌新问题嘛)

这里有篇随笔感觉对我这种入门辣鸡的萌新很友好https://blog.csdn.net/jiange702/article/details/81365005

#include
using namespace std;#include
#include
#include
//这里就解决了我的Q2问题,是直接用头文件引入就好啦/* *BFS算法的模板就大概是 1.创建队列 2.push头节点 3.循环 { 1.以队列不为空为条件 2.pop出头节点 3.根据题目条件进行判 4.push进头节点的子节点 } */void BFS(){ memset(visited, 0, sizeof(int)); queue
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
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; }};

转载于:https://www.cnblogs.com/kiznaiver1998/p/10745475.html

你可能感兴趣的文章
callable 和 FutureTask 和 future以及浅谈completionService
查看>>
Linux脚本中用户自定义终止符-EOF
查看>>
华为e6000
查看>>
ICMP协议
查看>>
浅入浅出Android(010):如何将已有的sqlite数据库放入程序中
查看>>
树莓派3学习笔记(5):mysql相关设置
查看>>
Nodejs:windows设置全局模块的安装位置
查看>>
Exception in thread "main" java.lang.NoClassDef...
查看>>
elasticsearch 外网访问9200端口访问
查看>>
dell服务器,系统开机错误日志:WARNING: at drivers/pci/intr_remapping.c
查看>>
自定义标签
查看>>
长整除
查看>>
Centos6.3下DRBD+HeartBeat+NFS配置笔记
查看>>
Cacti+Nagios监控平台完美整合
查看>>
IaaS,PaaS,SaaS 的区别
查看>>
CentOS 6.3 FTP 安装vsftp 虚拟用户设置全解
查看>>
Windows下Git多账号配置,同一电脑多个ssh-key的管理
查看>>
1、拖地要30分钟, 只有一个拖把 2、擦窗要30分钟, 只有一块抹布 3、切菜要30分钟, 只有一把刀 假设只有以上工具才能完成工作时,完成此三件 工作需要两个人工作多长时间?...
查看>>
关于CPU利用率和Load Average负载
查看>>
选项卡-切换列表
查看>>