第三周读资料博客

目录

一:BFS:

二 :DFS

三:图论

四:数论


本周看了搜索(BFS DFS),图论,数论博客:

具体如下:

一:BFS:

1:BFS模板-走迷宫_凌乱之风的博客-CSDN博客_bfs迷宫模板

然后我又做了下面这个洛谷上的题,题目比博客上的要难,博客是一个可以套用BFS模板的题,而题目则是需要修改一下限制条件,并且输出过程路径

走迷宫 - 洛谷

void search(int t)
{
    if(满足输出条件)
    {
        输出解;
    }
    else
    {
        for(int i=1;i<=尝试方法数;i++)
            if(满足进一步搜索条件)
            {
                为进一步搜索所需要的状态打上标记;
                search(t+1);
                恢复到打标记前的状态;//也就是说的{回溯一步}
            }
    }
}

2:BFS基础讲解(广度优先搜索)_背锅切图仔的博客-CSDN博客

 本篇写的比较详细,从头文件一直到代码实现+例题

通过读这篇文章,我感觉BFS就像核弹的链式反应一样,只不过核反应无法终止,而BFS在一定条件下就可以停止

接下来是一系列BFS题目

3:UVA 11624 Fire!(图论BFS)_focus_best的博客-CSDN博客

4:POJ 3278 Catch That Cow(图论:BFS)_focus_best的博客-CSDN博客

5: POJ 3414 Pots(图论:BFS)_focus_best的博客-CSDN博客

6:POJ 1324 Holedox Moving(图论:BFS)_focus_best的博客-CSDN博客

7:POJ 2243 Knight Moves(BFS或DFS)_focus_best的博客-CSDN博客

8: POJ 1753 Flip Game(BFS+状态压缩)_focus_best的博客-CSDN博客

9: POJ 1606 Jugs(BFS:找最短路径并输出)_focus_best的博客-CSDN博客

10: POJ 1077 Eight(BFS:输出路径)_focus_best的博客-CSDN博客

11: POJ 3346 Treasure of theChimp Island(BFS)_focus_best的博客-CSDN博客

12: POJ 2046 Gap(BFS+hash判重)_focus_best的博客-CSDN博客

13: POJ 3322 Bloxorz I(BFS:求迷宫最短路径)_focus_best的博客-CSDN博客

14: POJ3221 Diamond Puzzle(BFS:最短路)_focus_best的博客-CSDN博客

15: POJ2110 Mountain Walking(BFS/DFS+二分+枚举区间)_focus_best的博客-CSDN博客

16: POJ 2920 Mine Map(BFS)_focus_best的博客-CSDN博客

17: POJ 1465 Multiple(BFS+同余剪枝)_focus_best的博客-CSDN博客

18: HDU 1728 逃离迷宫(BFS)_focus_best的博客-CSDN博客

19: HDU 1240 Asteroids!(BFS)_focus_best的博客-CSDN博客

20: HDU 2579 Dating with girls(2)(BFS)_focus_best的博客-CSDN博客

21: HDU 1226超级密码(数位BFS)_focus_best的博客-CSDN博客

22:HDU 1072 Nightmare(BFS)_focus_best的博客-CSDN博客

23:HDU 1495 非常可乐(BFS:3杯倒水)_focus_best的博客-CSDN博客

24: HDU 1430 魔板(BFS+HASH+置换)_focus_best的博客-CSDN博客

25: HDU 2612 Find a way(BFS)_focus_best的博客-CSDN博客

26: HDU 1180 诡异的楼梯(BFS:时间动态图)_focus_best的博客-CSDN博客

27: HDU 1547 Bubble Shooter(BFS)_focus_best的博客-CSDN博客

28: HDU 1312 Red and Black(简单BFS)_focus_best的博客-CSDN博客

29: HDU 1253 胜利大逃亡(简单三维BFS)_focus_best的博客-CSDN博客

30: HDU 1401 Solitaire(棋盘状态BFS)_focus_best的博客-CSDN博客

31: HDU 1175 连连看(BFS)_focus_best的博客-CSDN博客

32: HDU 1242 Rescue(BFS或BFS+优先队列)_focus_best的博客-CSDN博客

33: HDU 2531 Catch him(BFS:判断是否存在路径)_focus_best的博客-CSDN博客

读完这些题,首先我感觉是作者非常的认真,每篇博客思路都非常清晰;其次我感觉思维非常重要,需要合理去重,寻找最优解,背过模板不是最重要的,最重要的是寻找在最优解。

部分题目用到了哈希表,日后需要学习。哈希表在判重上有着非常重要的作用。

题目中的同余剪枝思想是我第一次见到

BFS不考虑结果位置的可能性,属于盲搜,目的是系统的检查地图上所有的节点,彻底的搜索整张图,直到找到结果位置。

这个算法从某一点开始,同时向不同方向走,直到找到一条路可以走,找到的这一条路就一定是最短的路,这时直接返回,所以这个算法的速度非常的快。

(a与b同余,所以这样.仔细想想).所以如果a的一级子孙节点不行的话,b的一级子孙节点也不行.a的x级子孙节点不行的话,b的x级子孙节点也不行.(想想是不是)也就是说a的每一个特定的子孙%N所产生的余数与 b的每一个特定的子孙%N产生的余数一一对应且相同.

所以我用flag[x]=true表示对N求余==x的数已经产生了,以后如果还有这种数生成,直接放弃即可.
————————————————
版权声明:本文为CSDN博主「focus_best」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013480600/article/details/26458435

这里面很多文章我还是看不太懂,深感自己目前很菜,需要学习的东西还非常多,得再继续努力。

二 :DFS

1:​​​​​​​ DFS DFS原理白话解析_li_jeremy的博客-CSDN博客_dfs 算法

2:DFS(深度优先搜索算法)_Starzkg的博客-CSDN博客_dfs 

DFS基于递归思想,先从头开始递归,全部标记,输出第一种排列,再由尽头递归返回,并取消标记,因为递归返回,有的循环未执行完,继续自增执行,对未标记的项进行填数 ,填数后,又向尽头递归并标记; 

简而言之就是一直往深处走,直到找到解或者走不下去为止;

int check(参数)
{
    if(满足条件)
        return 1;
    return 0;
}

void dfs(int step)
{
        判断边界
        {
            相应操作
        }
        尝试每一种可能
        {
               满足check条件
               标记
               继续下一步dfs(step+1)
               恢复初始状态(回溯的时候要用到)
        }
}   

下面是看的题目:

1:POJ 1915 Knight Moves(DFS/BFS)_focus_best的博客-CSDN博客

2: POJ 1024 Tester Program(DFS:求单源最短路径)_focus_best的博客-CSDN博客

这个题十分的巧妙, 博主对两个边同时DFS时间控制精确,代码十分完美

3:POJ 2243 Knight Moves(BFS或DFS)_focus_best的博客-CSDN博客

4:HDU 4536 XCOM Enemy Unknown(DFS+回溯构造)_focus_best的博客-CSDN博客

5:POJ 2034 Anti-prime Sequences(素数预处理+DFS回溯)_focus_best的博客-CSDN博客

6: HDU 4707 Pet(DFS:树深度相关)_focus_best的博客-CSDN博客

7: POJ 1190 生日蛋糕(DFS:优化剪枝)_focus_best的博客-CSDN博客

8:数位DP(DFS)_凌乱之风的博客-CSDN博客

看题总结

剪枝不够不会超时,直接DFS常在非图遍历中使用,记忆搜索加剪枝是常用的优化方法。

三:图论

因为要学DFS和BFS所以我这周看了图论;在图论里,时常出现DFS 和 BFS的影子,他们常用作图的遍历,目前看理论博客还能将就,看题有些看不懂

1:图论复习——dfs树,点双,边双,强连通分量_Edward The Bunny的博客-CSDN博客

2:图论入门及基础概念(图篇)_qq_43133135的博客-CSDN博客_图论入门

3:图论基础知识_图论基础_cunchi4221的博客-CSDN博客

4: 图论算法新手入门_yhl1999的博客-CSDN博客_图论入门

 5:简单入门图论_码农在途的博客-CSDN博客

目前明白了图的表示方法,以及一些简单的遍历,图的类型。图的边界表示,以及图上的点的表示,感觉和线性代数学的矩阵关系比较密切。实际写代码还需要继续学习才行。

四:数论

1:数论快速入门(同余、扩展欧几里德、中国剩余定理、大素数测定和整数分解、素数三种筛法、欧拉函数以及各种模板)_Must_so的博客-CSDN博客

2: 数论_冷眼旁观你的泪的博客-CSDN博客

因为我的数学不是很好,所以想笨鸟先飞,先看看数论,

目前看懂了同余定理,扩展欧几里得算法(这个很有用),素数筛选

但实际代码能力需要加强,在最近的比赛中,也经常出现因为对C++语法不熟悉,导致A不出题来(之前没学过C++,学过JAVA和PY),有些东西C++和别的语言名字相同,但实际用法效果大不相同!纸上得来终觉浅,绝知此事要躬行。接下来要多加练习!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值