算法大纲
算法大纲for oier
简单聊一聊算法学习。
整个的学习主要分成算法与数据结构两大块。我相信很多人也听过程序 = 算法+数据结构这句话,那我们就来分别讲讲这两个东西。
算法这里我就不像教科书里那样赘述算法的定义性质什么的了。就直截了当的开始讲讲各个算法的特点,以及竞赛解题的思路
暴力这或许不太能算的上一种算法,但这确实对于解题至关重要。对于一题算法题要是连暴力解法都想不出来,那这题也差不多拿不到了(裸题除外)。而其他算法(以及数据结构)也只是对代码进行重构优化其他算法决定你能拿几分,暴力决定你能不能拿分而这种算法之取决于你的思路,一些题目对智力要求不低,说他是最简单而又最难的算法不无道理。
搜索BFS,DFS,A,IDDFS,IDA等等等等,是一条蛮重要的路线,而且和图论密切相关,是必须掌握的。
贪心和暴力差不多,是人类最朴素的思想的产物。是一种重要的算法思想,很多题目或多或少都有他的身影,注意他是一种思想,而不想搜索一样是一种明确的算法。
分治和贪心一样,也是一种重要的算法思想,log级别的优化经常用到
DP动态规划,简直太简直了()难题必备,具体思想我现在也没搞懂。
数学慢慢学吧 ...
无题
随便写写_2022 5 29 1:17_忙了一个晚上,什么也没干成,至少开始动笔了,就写写吧。
语法我也忘了差不多了,今晚我什么都不想讲了,就还是测试一下,把环境配好去学校不至于太尴尬。测试数学$\alpha$
$\frac {a}{b}$
看看插件,感觉也没什么是必要的。这部机子的配置,一切还是轻装上阵为妙。困了今天先到这里,哦不是早上先到这里,我看看能不能发博客。
八数码问题
八数码题目地址:
Acwing
HDU
在一个 3×3 的网格中,1∼8 这 8 个数字和一个 X 恰好不重不漏地分布在这 3×3 的网格中在游戏过程中,可以把 X 与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为正确排列
把 X 与上下左右方向数字交换的行动记录为 u、d、l、r。现在,给你一个初始网格,请你通过最少的移动次数,得到正确排列
我花了好几个晚上才完整的写了出来,毕竟还是新手,但独立写出来之后还有一点成就感(当然有参考)。下面就来小小提提我的思路吧。
bfs不仅可以搜索路径,还可以搜索状态。
这是我从黑书上看到的一句话,从后几个晚上便开始了我的不归路。
所以我也用黑书上的思路,bfs+cantor解决这道题
这题要寻找最短路径,所以bfs更适合
1. 广度优先搜索 (BFS)这个思路很好理解
1234567初始状态入队 while(队列不为空) 取出队首 if(找到目标) 返回答案 else 相邻状态入队
伪代码非常清晰,现在我们把文字展开成代码实现得到。
首先我们联系一下问题
输入占一行,将 3×3 的初始 ...