搜索
Ziiyan
这个作者很懒,什么都没留下…
展开
-
POJ - 1321 棋盘问题(回溯 DFS)
题目大意:中文题,任意的两个棋子不能放在棋盘中的同一行或者同一列。 解题思路:按行顺序处理,一次 dfs 处理一行,保证同一行只放一个棋子,vis[j] 标记第 j 列是否已经有棋子,用来保证列。#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath>#include<string.h>#define ma原创 2017-07-24 10:33:50 · 261 阅读 · 0 评论 -
UVA - 310 L--system
题目大意:给出 u、v、w、z 四个字符串,检索 w ,碰到 字符’a’ 就将 ‘a’ 替换为 u,碰到 ‘b’ 就替换为 v,全部替换完后判断 z 是否是 w 的子串,不是的话,对于新的串再进行替换。解题思路:对于所给的串,截取每一段不大于目标串的字符串,若等于目标串直接结束,不等于并且是未出现过的新子串的话将其放入队列。取队首字符串进行检索替换,然后截取其中不大于目标串的字符串……重复上述,直到原创 2016-10-27 17:31:00 · 397 阅读 · 1 评论 -
UVA - 10085 The most distant state
题目大意:求所给图达到最远状态的时候,移动最少次的移动顺序。 解题思路:bfs+判重。定义一个结构体存放当前图,空白位置的坐标,移动次数即移动到该图的步骤。每改变一次就判断,然后放入队列。 依旧是参考别人题解的咸鱼。#include<iostream> #include<cstdio>#include<cmath>#include<string.h>#include<stdlib.h>原创 2016-10-23 17:14:55 · 259 阅读 · 0 评论 -
UVA - 10422 Knights in FEN
题目大意:给出一些黑白骑士的位置,问移动 11 步内是否能够得到目标位置。解题思路:设置 tag 数组存下目标位置,每次移动都判断一次,然后就是回溯。剪枝只用了次数>10,可以再优化。一开始没转数字 , tag 是 char 型,移动判断什么的又用 int,总之 WA 了好几次,还是不要偷这种懒了(苦笑)另外注意骑士走的是日字,就是马的走法。#include<iostream> #include<原创 2016-10-17 17:45:23 · 264 阅读 · 0 评论 -
HDU - 1078 FatMouse and Cheese(记忆化搜索)
题目大意:n*n 棋盘,老鼠从(0,0)出发,可以上下左右移动吃奶酪,每次最多 k 步,且需要保证下一格奶酪比本格多,问最多能吃到多少。 解题思路:dp + 搜索 dp[][] = max(所有可以从当前点走到的点的dfs的结果集) 记得加上当前格子的值#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath原创 2017-09-04 10:34:52 · 178 阅读 · 0 评论 -
HDU - 1495 非常可乐(BFS)
题目大意:中文题。一开始以为一定要两个杯子相同,后来发现瓶子也是可以当杯子用的,只要均分就行……天真了 解题思路:六个入口 BFS,没什么难的,复制的时候漏改了调了好久才发现#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath>#include<string.h>#include<string>#inc原创 2017-08-09 14:31:02 · 214 阅读 · 0 评论 -
HDU - 2612 Find a way(BFS)
题目大意:Y 和 M 约定在一家 KFC 相见,地图上有许多家 KFC 都用 @ 表示,每移动一格耗时 11 分钟,找一条耗费时间最少的路,并输出两人耗时之和。 解题思路:t 数组记录到达当前位置需要几步,两次 BFS 即可求出两个人到达某个位置的步数和,最后遍历地图,找出所有 @ 对应位置次数和最少的地方,输出时间。 有的 @ 是无法达到的,在 t 中仍是初始化的 0,这要比可达的时间少,但显原创 2017-08-09 14:37:43 · 208 阅读 · 0 评论 -
UVA - 1600 Patrol Robot(BFS 三维判重)
题目大意:m * n 的地图,机器人要从(0, 0)走到(m, n),上下左右移动,0 可走 1 为障碍,k 表示可以连续通过的障碍数,输出最小步数。 解题思路:vis 多一维判断已经通过的障碍,别的就是套 BFS#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath>#include<string.h>#原创 2017-08-09 14:41:40 · 208 阅读 · 0 评论 -
UVA - 572 Oil Deposits(DFS)
题目大意:找出有多少块 @,八个方向相邻就算相连。解题思路:用一个数组 num 标记该 @ 是否被查找过,若有则返回,八个方向递归查找相邻的 @。统计进入了几次 dfs#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>char map[原创 2016-08-10 21:48:47 · 186 阅读 · 0 评论 -
POJ - 3984 迷宫问题(BFS、DFS)
题目大意:5×5 的迷宫,左上走到右下,输出最短路线。 解题思路:水题,BFS 和 DFS 都写了,感受了一下区别。 BFS 第一次到达终点就一定是最短路,输出路径的话要保留之前所有的尝试操作并记录上一步,然后从终点找回起点,利用递归输出路径。 DFS 会找出所有的路径,需要对比步数找出最短的那条,同时只需要储存当前最短的那条路径就可以,如果找到更优的路径再更新。#include<iostre原创 2017-07-24 11:32:01 · 335 阅读 · 0 评论 -
POJ - 3414 Pots(BFS)
题目大意:有编号 1、2 两个水壶,容量分别是 A、B,有 FILL、DROP、POUR 三种操作,现在要通过这些操作得到 C 升水,问最少几步,并输出步骤。 FILL(i) 装满水壶 i DROP(i) 倒空水壶 i POUR(i, j) i 向 j 倒水,若 j 满了,则多余的水留在 i 中 解题思路:因为 i,j 都可以取 1、2,所以仔细拆分一下其实有 6 种操作,所以是 6 个入口原创 2017-07-24 11:25:05 · 241 阅读 · 0 评论 -
POJ - 3087 Shuffle'm Up(模拟)
题目大意:有S1,S2 两堆牌,每堆牌有 C 张,进行洗牌操作,最终得到 S12 一堆牌(共 2*C 张),从下至上的牌序是:S2的最后一张,S1的最后一张,S2的倒数第二张,S1的倒数第二张……接着把 S12 的上面 C 张当作新的 S2,下面 C 张当作新的 S1,再洗牌,如此循环。问洗几次牌后能够达成目标牌序。 解题思路:不知道为什么归类为搜索,直接用数组模拟了,搜了一下题解好像是数据大的话原创 2017-07-24 11:13:43 · 210 阅读 · 0 评论 -
POJ - 3126 Prime Path (BFS)
题目大意:给两个四位的素数 A,B,每次只允许变换一个数字,换完后的四位数也要求是素数,问几步能使 A 换成 B,无法换到输出 Impossible 解题思路:4 位数字,每位数字可以换成 0~9,粗糙看一下是40个入口的BFS。 剪枝: 1、千位不能为 0 2、不能换成自己 3、替换后的数字也要是素数 判定素数这边先打一个素数表//素数打表void isprime() { m原创 2017-07-24 10:59:58 · 213 阅读 · 0 评论 -
POJ - 1426 Find The Multiple (暴力DFS)
题目大意:给出一个数字 n,找到一个非零的,由 0、1 组成的十进制数字,且是 n 的倍数,输出这个数。 解题思路:暴力,第一位一定是 1,第二位开始可以 1 或 0,一位一位枚举下去肯定会找到的……#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath>#include<string.h>#define原创 2017-07-24 10:49:35 · 173 阅读 · 0 评论 -
POJ - 3278 Catch That Cow (BFS)
题目大意:FJ 初始在点 N,奶牛初始在点 K,两点在同一条线上。 FJ 有两种移动方式: 1、x+1 或 x-1 2、2*x 奶牛不动,问最少移动几次 FJ 可以抓住奶牛。 解题思路:三个入口的 BFS,注意一下边界,不控制一下会 RE#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath>#inc原创 2017-07-24 10:41:39 · 185 阅读 · 0 评论 -
UVA - 321 The New Villa
题目大意:别墅有 r 个房间,d 扇门, s 个开关,判断是否能从编号 1 的房间走到编号 r 的房间,若能打印步骤。两个房间之间有门的才可移动,在移动时注意不能进入没有亮灯的房间。 解题思路:二进制表示房间状态,bfs 查找递归输出。#include<iostream> #include<cstdio>#include<cmath>#include<string.h>#include<s原创 2016-11-04 09:35:21 · 295 阅读 · 0 评论