HDU1241(bfs)JAVA】的更多相关文章

import java.util.Scanner;public class Main1241 { public static void main(String[] args) { Scanner cin=new Scanner(System.in); while(cin.hasNext()){ int n=cin.nextInt(); int m=cin.nextInt(); if(n==0){ break; } plot [][]plots=new plot[n][m]; for(int i=…
原文地址:http://www.lilongdream.com/2014/04/10/94.html(为转载+整理) 以下从Java的角度总结了面试常见的算法和数据结构:字符串,链表,树,图,排序,递归 vs. 迭代,动态规划,位操作,概率问题,排列组合,以及一些需要寻找规律的题目. 1. 字符串.数组和矩阵 首先需要注意的是和C++不同,Java字符串不是char数组.没有IDE代码自动补全功能,应该记住下面这些常用的方法. [java] view plaincopy toCharArray(…
本文兼参考自<算法导论>及<算法>. 以前一直不能够理解深度优先搜索和广度优先搜索,总是很怕去碰它们,但经过阅读上边提到的两本书,豁然开朗,马上就能理解得更进一步. 下文将会用到的一个无向图例子如下: 深度优先搜索 迷宫搜索 在<算法>这本书中,作者写了很好的一个故事.这个故事让我马上理解了深度优先搜索的思想. 如下图1-1所示,如何在这个迷宫中找到出路呢?方法见图1-2. 图1-1 等价的迷宫模型 探索迷宫而不迷路的一种古老办法(至少可以追溯到忒修斯和米诺陶的传说)叫…
Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Your goal is to reach the last index in the minimum number of jumps…
Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node. 给一个二叉树,找出它的最小深度.最小深度是从根节点向下到最近的叶节点的最短路径,就是最短路径的节点个数. 解法1:DFS 解法2: BFS Java: DFS, Time Comp…
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom. Example: Input: [1,2,3,null,5,null,4] Output: [1, 3, 4] Explanation: 1 <--- / \ 2 3 <--- \ \ 5 4 <---  …
Let's play the minesweeper game (Wikipedia, online game)! You are given a 2D char matrix representing the game board. 'M' represents an unrevealed mine, 'E' represents an unrevealed empty square, 'B' represents a revealed blank square that has no adj…
You have a lock in front of you with 4 circular wheels. Each wheel has 10 slots: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'. The wheels can rotate freely and wrap around: for example we can turn '9' to be '0', or '0' to be '9'. Each move consis…
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /** * 需求:计算网页访问量前三名 * 用户:喜欢视频 直播 * 帮助企业做经营和决策 * * 看数据 */ object UrlCount { def main(args: Array[String]): Unit = { //1.加载数据 val conf:SparkConf = new Spa…
package practice; import java.util.Iterator; import java.util.Stack; import edu.princeton.cs.algs4.*; public class TestMain { public static void main(String[] args) { Graph a = new Graph(6); a.addEdge(2, 4); a.addEdge(2, 3); a.addEdge(1, 2); a.addEdg…
需要说明一点,要成功运行本贴代码,需要重新复制我第一篇随笔<简单的循环队列>代码(版本有更新). 进入今天的主题. 今天这篇文章主要探讨广度优先搜索(BFS)结合队列和深度优先搜索(DFS)结合栈的示例应用. 一.队列和 BFS 众所周知,广度优先搜索(BFS)最为广泛使用场景是找出从根结点到目标结点的最短路径,而 结点的处理顺序与添加到队列的顺序是完全相同的顺序,即先进先出(FIFO). 这就是我们在 BFS 中使用队列的原因. 二.栈和DFS 深度优先搜索(DFS),与 BFS 类似,也可…
一天蒜头君掉进了一个迷宫里面,蒜头君想逃出去,可怜的蒜头君连迷宫是否有能逃出去的路都不知道. 看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头君是否有可以逃出去的路. 输入格式 第一行输入两个整数 nn 和 mm,表示这是一个 n \times mn×m 的迷宫. 接下来的输入一个 nn 行 mm 列的迷宫.其中 'S' 表示蒜头君的位置,'*'表示墙,蒜头君无法通过,'.'表示路,蒜头君可以通过'.'移动,'T'表示迷宫的出口(蒜头君每次只能移动到四个与他相邻的位置——上,下,左,右). 输出格…
package com.algorithm.test; import java.util.ArrayDeque; import java.util.Scanner; public class DfsAndBfs { private static final int[][] dir = { {,}, {,-}, {,-}, {,}, {,}, {-,-}, {-,}, {-,}, }; private static int[][] vis; private static char[][] map…
public class City { String name; int id; static int idCounter = 0; public City(String name) { this.name=name; id = idCounter++; } } import java.util.ArrayList; public class Graph { public static void main(String[] args) { // TODO Auto-generated metho…
<pre name="code" class="java"> import java.util.HashMap; import java.util.LinkedList; import java.util.Queue; /*广度遍历是遍历到某个顶点,然后訪问其连接点a,b.接着訪问a的连接表, 非常自然的,这种数据结构就是HashMap,以顶点为key.保存每一个顶点的连接表 */ public class BFS { static int count=…
题目:5073. 进击的骑士 一个坐标可以从 -infinity 延伸到 +infinity 的 无限大的 棋盘上,你的 骑士 驻扎在坐标为 [0, 0] 的方格里. 骑士的走法和中国象棋中的马相似,走 "日" 字:即先向左(或右)走 1 格,再向上(或下)走 2 格:或先向左(或右)走 2 格,再向上(或下)走 1 格. 每次移动,他都可以按图示八个方向之一前进. 现在,骑士需要前去征服坐标为 [x, y] 的部落,请你为他规划路线. 最后返回所需的最小移动次数即可.本题确保答案是一…
815. 公交路线 我们有一系列公交路线.每一条路线 routes[i] 上都有一辆公交车在上面循环行驶.例如,有一条路线 routes[0] = [1, 5, 7],表示第一辆 (下标为0) 公交车会一直按照 1->5->7->1->5->7->1->- 的车站路线行驶. 假设我们从 S 车站开始(初始时不在公交车上),要去往 T 站. 期间仅可乘坐公交车,求出最少乘坐的公交车数量.返回 -1 表示不可能到达终点车站. 示例: 输入: routes = [[1,…
试题 算法提高 八数码 问题描述 RXY八数码 输入格式 输入两个33表格 第一个为目标表格 第二个为检索表格 输出格式 输出步数 样例输入 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 0 8 样例输出 1 数据规模和约定 33*2 PS: 花里胡哨得,直接套代码搜 import java.util.*; public class Main { static int[]dx = {0,0,1,-1}; static int[]dy = {1,-1,0,0}; static i…
1.图的DFS: 即Breadth First Search,深度优先搜索是从起始顶点开始,递归访问其所有邻近节点,比如A节点是其第一个邻近节点,而B节点又是A的一个邻近节点,则DFS访问A节点后再访问B节点,如果B节点有未访问的邻近节点的话将继续访问其邻近节点,否则继续访问A的未访问邻近节点,当所有从A节点出去的路径都访问完之后,继续递归访问除A以外未被访问的邻近节点. /* * 深度优先遍历 */ public void DFS(int i) { isVisited[i] = true; i…
题目: Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's undirected graph serialization: Nodes are labeled uniquely. We use # as a separator for each node, and , as a separator for node label and each n…
1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点)开始,沿着铁轨(边)移动到其他城市(顶点),有两种方法可以用来搜索图:深度优先搜索(DFS)和广度优先搜索(BFS).它们最终都会到达所有连通的顶点,深度优先搜索通过栈来实现,而广度优先搜索通过队列来实现,不同的实现机制导致不同的搜索方式. 1.1 深度优先搜索 深度优先搜索算法有如下规则: 规则1…
一 广度优先遍历(BFS) //广度优先遍历二叉树,借助队列,queue public static void bfs(TreeNode root){ Queue<TreeNode> queue = new LinkedList<TreeNode>(); //队列需要使用linkedlist来初始化 if(root == null) return; queue.add(root); while(!queue.isEmpty()){ TreeNode node = queue.pol…
前言 图在算法世界中的重要地位是不言而喻的,曾经看到一篇Google的工程师写的一篇<Get that job at Google!>文章中说到面试官问的问题中几乎有一半的问题都可以用图的方法去解决.由此也可以看出图确实适用范围确实很广. 图的表示 闲话不多说,首先要介绍的就是图的表示,图最常用的两种表示方法是邻接表和邻接矩阵.顾名思义,这两种办法分别用表和矩阵的方式描述图中各顶点之间的联系 下图展示了两种表示上面这个图的方法 BFS 本文将着重介绍遍历图的两种最常用的方法,分别为广度优先遍历…
作者:Leo-Yang 原文都先发布在作者个人博客:http://www.leoyang.net/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 前言 图在算法世界中的重要地位是不言而喻的,曾经看到一篇Google的工程师写的一篇<Get that job at Google!>文章中说到面试官问的问题中几乎有一半的问题都可以用图的方法去解决.由此也可以看出图确实适用范围确实很广. 图的表示 闲话不多说,首…
773. 滑动谜题 在一个 2 x 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示. 一次移动定义为选择 0 与一个相邻的数字(上下左右)进行交换. 最终当板 board 的结果是 [[1,2,3],[4,5,0]] 谜板被解开. 给出一个谜板的初始状态,返回最少可以通过多少次移动解开谜板,如果不能解开谜板,则返回 -1 . 示例: 输入:board = [[1,2,3],[4,0,5]] 输出:1 解释:交换 0 和 5 ,1 步完成 输入:boa…
1 问题描述 广度优先查找(Breadth-first Search,BFS)按照一种同心圆的方式,首先访问所有和初始顶点邻接的顶点,然后是离它两条边的所有未访问顶点,以此类推,直到所有与初始顶点同在一个连通分量中的顶点都被访问过了为止.如果仍然存在未被访问的顶点,该算法必须从图的其他连接分量中的任意顶点重新开始. 2 解决方案 2.1 蛮力法 此处借用<算法设计与分析基础>(第3版)上一段文字介绍及其配图来讲解,下面程序中使用的图就是配图中所给的数据,在程序中,使用邻接矩阵来表示配图中图.…
本文总结了刷LeetCode过程中,有关树的遍历的相关代码实现,包括了二叉树.N叉树先序.中序.后序.BFS.DFS遍历的递归和迭代实现.这也是解决树的遍历问题的固定套路. 一.二叉树的先序.中序.后序遍历  1.递归模板  (1)先序 1 public void preorder(TreeNode root) { 2 if (root == null) { 3 return; 4 } 5 res.add(root.val); 6 preorder(root.left); 7 preorder(…
介绍 深度优先遍历:从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止.然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点为止. 广度优先遍历:从根节点出发,在横向遍历二叉树层段节点的基础上纵向遍历二叉树的层次. DFS实现: 数据结构:栈 父节点入栈,父节点出栈,先右子节点入栈,后左子节点入栈.递归遍历全部节点即可 BFS实现: 数据结构:队列 父节点入队,父节点出队列,先左子节点入队,后右子节点入队.递归遍历全部节点即可 树的实现 public class Tre…
1162. 地图分析 你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了.其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离.(PS:你看看这个翻译) 我们这里说的距离是『曼哈顿距离』( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个区域之间的距离是 |x0 - x1| + |y0 - y1| . 如果我们的地图上只…
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大家.对于这次跳槽找工作, 我准备了挺长的时间, 其中也收集了很多比较好的笔试面试题, 大都是一些常用的基础, 很多都是由于时间原因没有来得及给出答案, 但是题目大都是比较经典实用的, 现在都放到这里, 希望对正处于找工作的博友有一定的帮助. 第一部分: Java基础(此部分面试题题目来自:http:…