搜索
文章平均质量分 60
搜索算法
chbmvdd
见心明性 知行合一
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1133: Knight Moves
DFS 不适合解决最短路径问题,尤其是当路径长度较大时。你的代码慢在 DFS 的指数级时间复杂度、重复访问和无效路径回溯。强烈建议改用 BFS,这是解决此类问题的标准方法。int x,y;return 0;while(!i<8;记忆化剪枝挺有意思,保存状态,维持最优状态。原创 2025-03-05 21:55:44 · 854 阅读 · 0 评论 -
6943:数独游戏
我一开始的思想是部分正确的,搞清楚谁是主人公,谁是主人公的状态,题目条件无非就是限制主人公的状态变化,主人公的每次状态变化都会引起下一个主人的状态,所以当下一个主人公出现问题了,那就说明前面的主人公的状态不合理,于是需要回溯。在该函数内,就可以把nx,ny传进去,随机定位nx,ny为空白位置,如果找不到空白位置,说明全部地图已经被铺满了,如果找到了空白位置,那么就进行下一次递归,ai的思路很妙啊。//回溯法的核心思想就是在递归返回的时候,撤销当前的选择,回到之前的状态。输出9行,每行9个数字表示数独的解。原创 2025-03-05 21:34:07 · 685 阅读 · 0 评论 -
A*寻路笔记
在当前代码中起到的作用:map懂得如何给int等基本类型生成哈希值,但是不懂得如何给自定义函数生成哈希值,所以要自己写一个哈希函数来创建哈希值,也是一种映射吧。目的是将一个元素转化成一个具体的值,方便查找,就像给图书馆里面的书籍编号一样,这样就可以起码定位某一个书架了。一个命名空间,一个花括号,一个template,等会自己尝试写几个哈希函数才能检验自己知道了。也就是说一个节点不仅仅是一个节点,还可以给这个节点添加属性,记录一些东西。优先队列和sort是相反的,sort是同顺序,优先队列是逆顺序。原创 2025-03-05 21:20:52 · 724 阅读 · 0 评论 -
5809: 小猫爬山
这是顺序模式的,第一只猫猫确定一种状态之后,第二只猫猫就可以 选择一种状态了,第二只猫猫确定一种状态后,第三只猫猫就可以选择一种状态了,以此类推。这道题对于小猫有两种操作,一是放进任意的已有的小车里,二是新开一辆车,放进去。接下来N行每行一个整数,其中第i+1行的整数表示第i只小猫的重量Ci。对于100%的数据,1<=N<=18,1<=Ci<=W<=10^8。求最小值的题目,如果当前值已经大于当前的最小值了,那就没有必要记录了。求最大值的题目,如果当前值已经小于当前的最大值了,那也没有必要记录了。原创 2025-03-02 21:22:13 · 293 阅读 · 0 评论 -
6266: N皇后问题
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。1.犯蠢了,跟昨天一样的老毛病,自己都说的从1开始记索引,那么数组怎么也要开大点啊,怪不得只输出一次。共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。你的任务是,对于给定的N,求出有多少种合法的放置方法。4.对于多组数据的题目,要有重新初始化的意识。2.n其实当全局变量,不过都差不多。原创 2025-02-28 21:17:09 · 217 阅读 · 0 评论 -
5943: 八皇后问题
2.细节方面要注意,如果自己默认从1开始索引的话,输出空格时必须要设置不等于1时放空格。按给定顺序和格式输出所有八皇后问题的解(见样例,要求按照列优先的顺序输出各个解)。4.写了个check函数,二分也要写check函数,二分我还不太熟练欸。5.写的越来越流畅了,这才舒服嘛,之后还可以重新回来写一遍,太爽了。在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方。3,有行优先和列优先,意思是一样的,其实就是把地图翻转了一下。1.创建数组时就要想到初始化。原创 2025-02-27 19:08:10 · 166 阅读 · 0 评论 -
5948: 排列型枚举
于是可以在同一个index放入更大的i,再次进行下一个程序,然后下一个程序又会从1到n,看哪里没有用过,所以需要上一个程序将自己用过的改为没用过。2.刚开始啥都没有输出,于是打印变量查看,最后发现是for循环的i初始化把1打成了i,所以当逻辑没有问题的时候,要注意看细节,哪里有可能打错。1.对于每一个节点来说,当后一个程序结束返回到当前程序时,下一个i永远是更大的。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。尽量把每一个变量都打印出来观察,一个范围,一个范围的查找问题所在。原创 2025-02-27 19:03:14 · 339 阅读 · 0 评论 -
5798: 组合型枚举
首先,同一行内的数升序排列,每个数字后面有一个空格。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如1 3 9 12排在1 3 10 11前面)。从 1~n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。2.每一个地方的细节都考虑清楚啊,if(index==n)注意这里是n还是m,记住每个变量的含义,并且弄清楚是哪里需要这个变量。3.m是所需数组长度,n是读取的数组长度,那么返回时肯定要的是所需数组长度。原创 2025-02-27 19:01:58 · 190 阅读 · 0 评论 -
6285: 2的幂次方表示
描述任何一个正整数都可以用2的幂次方表示。例如:137=27+23+20同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:2(7)+2(3)+2(0)进一步:7=22+2+20(21用2表示)3=2+20所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)又如:1315=210+28+25+2+20所以1315最后可表示为:2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)输入。原创 2025-02-27 11:00:19 · 599 阅读 · 0 评论 -
5759: 产生数
上面的整数234经过变换后可能产生出的整数为(包括原数)234,534,264,564共4种不同的产生数。4.每个程序都是一个节点,要考虑节点间的关系,这次节点是位置控制的,同一个位置要做不同的变换。求经过任意次的变换(0次或多次),能产生出多少个不同的整数。// 3.看了答案后思路还是不清晰,没有想清楚每一段程序的作用和每个变量的含义。后面有k行,每行两个数xi和yi,表示n中的数组xi可以变换成yi。给出一个整数n(n≤2000)和k个变换规则(k≤15)。② 规则中,右边的数字不能为零。原创 2025-02-27 10:37:47 · 274 阅读 · 0 评论 -
3104: 自然数的拆分
自然数的拆分:任何一个大于1的自然数N,总可以拆分为若干个自然数之和,并且有多种拆分方法。请设计一个对任意自然数,找出所有拆分方法的程序。每行输出顺序规则看上面例子可以观察出来吧(自己琢磨下吧o(∩_∩)o )。每行输入一个正整数n,2<=n<=35。为简单起见,每行数据之间没有空格,行末也没空格。5=1+4 ( 5=4+1看成同一种拆分)1.上一个,当前,下一个,这个思维很重要。2.利用好全局变量,但是要重新初始化。3.在草稿纸上列出的关键信息忘记了。6.输出关键变量来理解程序。原创 2025-02-25 18:57:34 · 298 阅读 · 0 评论 -
8132: 冰雪大冒险
接下来输入 k 行,每行输入两个数字 ai,bi,表示第 i 个障碍物的位置在第 ai 行,第 bi 列。接下来输入 k 行,每行输入两个数字 ai,bi,表示第 i 个障碍物的位置在第 ai 行,第 bi 列。现在给出地图中所有障碍物的位置,小码哥的初始位置和小码哥的操作序列,请你求出小码哥最终停留的位置。现在给出地图中所有障碍物的位置,小码哥的初始位置和小码哥的操作序列,请你求出小码哥最终停留的位置。第二行输入两个整数x,y (1≤x≤n,1≤y≤m),表示小码哥初始在第 x 行第 y 列。原创 2025-02-20 10:34:29 · 417 阅读 · 0 评论 -
1335:营救天使
然后就是对于bfs的理解了,bfs可以解决带权的路径的最优问题,要想深刻理解bfs,就要理解bfs的扩散感觉,它是一圈一圈扩散出去的,并且需要每一圈。地图上的每个位置都可以看作一个节点,有一个起点和一个终点,每个节点都有两个属性,一个属性是,从起点到这里所花的代价,另一个。所以任何可以初始化的东西都需要初始化,并且还要验证初始化成功没有,因为就像这道天使的题目,它题目是包含解救不出天使的情况的。所以要检查坐标,起点和终点的坐标究竟有没有被检测到,这个就是需要代码健壮性的思维了,所以严谨的思维是有用的。原创 2025-03-08 18:13:56 · 1086 阅读 · 0 评论
分享