![](https://img-blog.csdnimg.cn/20200411134321489.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
搜索
常见且很简单的搜索算法
van之风
这个作者很懒,什么都没留下…
展开
-
P1032 字串变换
题目本身其实并不难,但是细节特别特别多。。。。,我因为细节问题踩坑踩了一个小时,自从接触了C++,真的很有感触STL大法好这道题使用广搜的算法,首先自然是一个结构体,里面存放当前字符串和到达当前字符串所需要的步数。首先将初始的字符串设置为A,当前步数设置为0,入队,开始广搜,每次从队列弹出一个元素,判断当前的字符串是否等于B并且当前到达当前的步数是否小于10,如果满足条件就保存结果退出,如果...原创 2020-04-15 13:38:17 · 123 阅读 · 0 评论 -
P1036 选数
这道题题目本身并不难,递归写法也很简单。难点在于判重,虽然题目很基础,但是,事实上很多难的题目都是在基础之上,这道题做回了,实际上很多题目都能触类旁通,我之前因为去重的问题被逼死了…下面画不下了,凑合看8~,从图中可以看到,这样写递归会有很多的重复,就比如3 7 12 和7 12 3 就是重复了,当然你也把所有满足条件的都保存起来,然后每满足一个就判断之前保存的所有结果中是否有和其重复的,但...原创 2020-04-14 17:01:16 · 174 阅读 · 0 评论 -
P2404 自然数的拆分问题
说明/提示用回溯做。。。。N<=8题目本身倒不难,但是这道题真的把我坑死了…, 可能是还掌握的不太好,看到这种题目很快联想到之前做过的一题,给定 n个数,从中选出任意个数可以组合成 m 这n个数字中的那些数字可以重复选择,我灵机一动,这不就是和那题是一样的吗,给定n-1个数,分别为1----n-1,从中选出任意个数字使其和为n,就拿n=4来举例子8~不太会画画,凑合看8~从图中...原创 2020-04-14 12:44:41 · 281 阅读 · 0 评论 -
P1825 [USACO11OPEN]Corn Maze S 题解
这道题就是一道普通的搜索题,非常非常普通,普通的不能再普通那种,和以前的bfs一样,不过这个bfs要注意一个特判,当弹出的那个元素的是大写字母的时候,要窜梭到对应的大写字母,并且穿梭到了另外一个大写字母以后要将其标记为true,以为之前我们是入队才标记为true,但是这里我们只要一遇到大写字母就要穿越(也就是一遇到大写字母就要改变其坐标,到另一个大写字母的坐标),其他的和一般的搜索题都一样,...原创 2020-04-11 13:38:44 · 821 阅读 · 0 评论 -
P1162 填涂颜色
这道题想上去就很简单~思路:将城墙外的0全部涂成3,然后输出的时候如果是0就输出2,如果是3就输出0,如果是1就原样输出,下面是AC代码#include <iostream>#include <cstring>using namespace std;#define Max 666void dfs(int x,int y);int matrix[Max][M...原创 2020-04-10 14:55:35 · 69 阅读 · 0 评论 -
P1596 [USACO10OCT]Lake Counting S
本题比较简单,直接dfs即可,如果发现有水涡W,就将相连接的水涡全部设置为.下面是AC代码~#include <iostream>#include <cstring>using namespace std;#define Max 666char water[Max][Max];int N,M;int pos[9][3]={{0,0,0},{0,-1,0...原创 2020-04-09 22:27:47 · 483 阅读 · 0 评论 -
P1101 单词方阵
这道题思路还比较简单~直接dfs即可思路:输入完 n*n的单词以后,开始逐行逐列的枚举,如果找到其中一个是y,那就观察y的8个方向,看看哪一个是 i,然后顺着yi的方向看看能不能找到一条完整的yizhong,如果能找到就将这条路径全部标记为true,到时候输出的时候可以输出这些字符,反之如果不能连续7个yizhong就没必要标记了如果所示,只有连续的7个“yizhong”这几个字母我们才...原创 2020-04-09 14:48:58 · 138 阅读 · 0 评论 -
P1605 迷宫
题目比较简单 直接dfs,当然也可以用bfs来做,dfs更加简单,明了。我们还是用dfs吧~这里有个要注意的点,题目没有说迷宫的坐标是从0开始还是从1开始,这个时候你要去看一下样例,很明显样例会告诉你数组下标从1开始.下面是AC代码~#include <iostream>#include <cstring>#include <utility>usin...原创 2020-04-08 19:06:39 · 146 阅读 · 0 评论 -
P1433 吃奶酪
这道题大佬貌似都用的状压dp,可惜我不会…还没系统学习dp,只会一点皮毛,虽然不会状压dp,但我会暴搜,暴搜的思路就很简单了,其实就是一个全排列的问题,找出排列路径最短的那一个就是答案,现在的数据好像被加强了,最后一个点TL,dfs+剪枝只有90分,最后一个点我日后学完状压dp再用状压dp写一份,下面是90分代码~(大佬请无视)#include <iostream>#includ...原创 2020-04-08 17:55:58 · 178 阅读 · 0 评论 -
P2036 Perket
这道题一看就是DFS,直接上代码吧~#include <iostream>#include <vector>#include <cstring>#include <cmath>#include <utility>#define Max 666using namespace std;bool flag[Max];int...原创 2020-04-08 13:53:20 · 293 阅读 · 0 评论 -
P2895 [USACO08FEB]Meteor Shower S
这道题也是很简单的广搜模板题,题目比较简单,但是有些坑。思路:我们初始化一个数组,然后将流星到达的时间填入,其他没有流星的地方就是-1 ,这里一定要注意:只有当此时被流星砸中的时间小于上次被流星砸中的时间,或者其没有被砸中过,我们才能更新时间~,就比如下面这个例子:21 2 12 1 2** 他的数组应该是这样的**可以看到,流星首先在时间1 砸中的是(1,2),周围4块土地编程...原创 2020-04-08 09:24:32 · 122 阅读 · 0 评论 -
P1135 奇怪的电梯
这道题比较简单,直接DFS即可,但是,一定要剪枝,不剪枝就凉凉~我是绝对不会告诉你因为没有剪枝最后两个点A不动,下面是AC代码:#include <iostream>#include <cstring>using namespace std;#define Max 666int N,A,B;bool flag[Max];void dfs(int leve...原创 2020-04-06 22:55:26 · 160 阅读 · 0 评论 -
P1443 马的遍历
这道题一开始用的DFS#include <iostream>#include <cstring>#include <iomanip>using namespace std;#define Max 666int m,n,x,y;bool flag= false;bool p[Max][Max];int b[9][3]={{0,0,0},{0,...原创 2020-04-06 10:45:47 · 115 阅读 · 0 评论 -
P2392 kkksc03考前临时抱佛脚
这道题咋一看上去就是贪心,用优先队列,每次弹出第一大第二大的元素,然后加上较小的那一个,将两者之差压入优先队列,一直循环到优先队列只有一个元素,加上剩下的那个元素即可。#include <iostream>#include <queue>#define Max 666using namespace std; int main() { ...原创 2020-04-02 23:31:29 · 677 阅读 · 0 评论 -
P1219 [USACO1.5]八皇后 Checker Challenge
.题目本身不难,还是我太弱了,AC半天都不成。。。踩坑无数,第一个TL了4个,第二次改进后TL了最后一个。还踩坑无数,踩坑很隐蔽,例如下面这个很简单的程序~很多人都以为是输出1,这个点害得我找了好久好久的错误,你单独输出temp.size()都没啥问题,就是不能abs(0-temp.size()) 他的输出结果。输出这个之前先强转一波:size_t类型又像int,又不是,用的时候一...原创 2020-04-01 22:42:16 · 272 阅读 · 0 评论