数据结构——深搜(DFS)广搜(BFS)
文章平均质量分 81
听听丶
看别人翱翔! 我也得给我自己装上俩个翅膀
展开
-
DFS(深搜) 倒油问题
给定三个体积为12 ,8 ,5的木桶,桶内装有12 ,0,0的油,怎么样利用这三个桶倒出6体积的油。package cn.hdu;public class Dfs { //深搜 private static void searchDFS(int[] a, int[] volume,Parent parent) { //记录路径 parent=new Parent(a, pa原创 2016-03-09 14:01:56 · 1108 阅读 · 0 评论 -
拓扑排序(解析)
拓扑排序 通常我们把计划、施工过程、生产流程、程序流程等都当成一个工程,一个大的工程常常被划分成许多较小的子工程,这些子工程称为活动。这些活动完成时,整个工程也就完成了。 例如,计算机专业学生的课程开设可看成是一个工程,每一门课程就是工程中的活动,下图给出了若干门所开设的课程,其中有些课程的开设有先后关系,有些则没有先后关系,有先后关系的课程必须按先后关系开设,如开设数据结构课程原创 2016-03-11 17:46:12 · 743 阅读 · 0 评论 -
HDOJ1175 连连看
分析:1 字符不同,消不了2 转折次数>2,消不了这俩点进行剪枝本题运用深搜,深搜原理点此import java.util.Scanner;public class Main{ static int n,m; static Chess[][] chess; public static void main(String[] args) {原创 2016-03-11 20:43:52 · 339 阅读 · 0 评论 -
HDOJ1010 Tempter of the Bone
问题:小狗能否从起点S,经过时间T,恰好到达终点D。条件:1、Therefore the doggie had to arrive at the door on exactly the T-th second.(小狗必须在T时刻准时到达出口)2、In every second, he could move one block to one of the upper, low原创 2016-03-11 20:33:56 · 290 阅读 · 0 评论 -
HDOJ1195 Open the Lock
题意:给俩个四位数,第一个变到到第二个最少需要多少步每一个只能 每一位+-1(一次操作一个数 不能同时操作不同位)1-1=0则变9 9+1=10则变1或者相邻俩位数字交换 第一位和第四位不算相邻位解题思路:将四位数转换成四位数组,每一个四位数对应一个位置,这样可以用广搜寻找俩个位置之间的最短路径广搜原理点此import java.util.LinkedList;原创 2016-03-23 14:58:27 · 306 阅读 · 0 评论 -
HDOJ1240 Asteroids!
题意:首先一个字符Start N 1接下来是一个char[N] [N] [N]的三维数组模型 每个地方不是X 就是OX表示不可走 O表示可走每次只能走同一层前后左右 不同层上下接下来是俩行(起点 终点) 每行三个数0~N-1 分别表示 列 行 层最后一个END字符为一个实例求起点到终点的最短时间 每移动一个加1 能到输出N 最短时间不能到原创 2016-03-23 14:46:35 · 408 阅读 · 0 评论 -
HDOJ1285 确定比赛名次
本题具有特定关系的排序,使用拓扑排序法,话不多说,上代码(java)package cn.hncu.search;import java.util.Scanner;public class TopologySort { static Scanner sc; static int[][] matrix; static int[] degree; static boolean[原创 2016-03-11 17:57:05 · 356 阅读 · 0 评论 -
BFS(广度优先遍历搜索解析)
3.2 广度优先搜索(BFS)广度优先搜索思想广度优先搜索遍历类似于树的按层次遍历。对于无向连通图,广度优先搜索是从图的某个顶点v0出发,在访问v0之后,依次搜索访问v0的各个未被访问过的邻接点w1,w2,…。然后顺序搜索访问w1的各未被访问过的邻接点,w2的各未被访问过的邻接点,…。即从v0开始,由近至远,按层次依次访问与v0有路径相通且路径长度分别为1,2,…的顶点,直至连原创 2016-03-11 16:49:05 · 5348 阅读 · 1 评论 -
HDOj1016 Prime Ring Problem
题意:给一个1~20之间的数n,找到一条俩俩数字相邻 相加结果是素数的圈,如n=6时:这6个数可找到一条1+4=5,4+3=7,3+2=5,2+5=7,5+6=11,6+1=7的圈本题不难,要了解BFS(深搜)的原理,从1开始遍历下去,便会反馈结果。博主有一篇关于 深搜原理 的博客,不明白的可以去看看,明白深搜即看下面代码(java):import java.util.Scanner原创 2016-03-09 13:41:24 · 505 阅读 · 0 评论 -
HDOJ2102 A计划
本题涉及搜索,可用BFS(深搜)解决博主有一篇关于 深搜原理 的博客,不知道原理的可以去看看,懂深搜看下面代码(java):import java.util.Scanner; class Main{ public static void main(String[] args) { Scanner sc=new Scanner(System.in);原创 2016-03-09 13:55:28 · 628 阅读 · 0 评论 -
HDOJ1241 Oil Deposits
题意:每一个@的九宫格有其他@字符,说明这几个@字符是连通的,每一块不连通的@字符集是一块油田,问有几块?本题利用BFS广搜,废话不多说,上代码(java):package cn.hncu.search;import java.util.Scanner;public class SearchBFS { public static void main(String[] args)原创 2016-03-11 17:02:15 · 614 阅读 · 0 评论 -
BFS(广搜) 倒油问题
给定三个体积为12 ,8 ,5的木桶,桶内装有12 ,0,0的油,怎么样利用这三个桶倒出6体积的油。package cn.hdu;public class Bfs { public static void main(String[] args) { int[] a={12,0,0}; int[] volume={12,8,5}; searchBFS(volume,new原创 2016-03-11 17:10:17 · 925 阅读 · 0 评论 -
DFS(深度优先遍历搜索解析)
深度优先搜索思想 深度优先搜索遍历类似于树的先序遍历。假定给定图G的初态是所有顶点均未被访问过,在G中任选一个顶点i作为遍历的初始点,则深度优先搜索递归调用包含以下操作:(1)访问搜索到的未被访问的邻接点;(2)将此顶点的visited数组元素值置1;(3)搜索该顶点的未被访问的邻接点,若该邻接点存在,则从此邻接点开始进行同样的访问和搜索。原创 2016-03-09 13:30:17 · 4827 阅读 · 1 评论 -
HDOJ1026 Ignatius and the Princess I
题意:从(0,0)走到(n-1,m-1)的最短时间,只有数字和.号能走,有数字的地方说明有怪,需要花费这个数字的时间输入格式如:5 6.XX.1...X.2.2...X....XX.XXXXX.能走到输出格式如下显示具体的走法:It takes 13 seconds to reach the target position, let me show you原创 2016-03-12 18:19:15 · 288 阅读 · 0 评论