求最短通路值
来源:互联网 发布:暖气片不热 知乎 编辑:程序博客网 时间:2024/05/01 07:41
import java.util.LinkedList;import java.util.Queue;/** * Created by lxw, liwei4939@126.com on 2017/11/3. * 求最短通路值 * 广度优先搜索 */public class minPath { public int minPathValue(int[][] m){ if(m == null || m.length == 0|| m[0].length ==0 || m[0][0] != 1 || m[m.length-1][m[0].length - 1] != 1){ return 0; } int res = 0; int[][] map = new int[m.length][m[0].length]; map[0][0] = 1; Queue<Integer> rQ = new LinkedList<Integer>(); Queue<Integer> cQ = new LinkedList<Integer>(); rQ.add(0); cQ.add(0); int r = 0; int c = 0; while (!rQ.isEmpty()){ r = rQ.poll(); c = cQ.poll(); if(r == m.length- 1 && c == m[0].length - 1){ return map[r][c]; } walkTo(map[r][c], r - 1, c, m, map, rQ, cQ); walkTo(map[r][c], r + 1, c, m, map, rQ, cQ); walkTo(map[r][c], r, c - 1, m, map, rQ, cQ); walkTo(map[r][c], r, c + 1, m, map, rQ, cQ); } return res; } public void walkTo(int pre, int toR, int toC, int[][] m, int[][] map, Queue<Integer> rQ, Queue<Integer> cQ){ if(toR < 0 || toR == m.length || toC < 0 || toC == m[0].length || m[toR][toC] != 1 || map[toR][toC] != 0){ return; } map[toR][toC] = pre + 1; rQ.add(toR); cQ.add(toC); } public static void main(String[] args){ minPath tmp = new minPath(); int[][] matrix = {{1, 0, 1, 1, 1},{1, 0, 1, 0, 1}, {1, 1, 1, 0, 1},{0, 0, 0, 0, 1}}; System.out.println(tmp.minPathValue(matrix)); }}
阅读全文
0 0
- 求最短通路值
- BFS、DFS——求最短通路值
- 数组与矩阵---求最短通路值
- 通路搜索
- 潜通路分析
- 欧拉通路
- 渲染通路(Pass)
- 找最佳通路
- 并查集求欧拉回路/通路
- Ogre 渲染通路(Pass)
- 有向图欧拉通路
- 无向图欧拉通路
- Euler(欧拉通路)
- 求迷宫通路问题
- hdu5883【欧拉通路】
- 蓝牙的音频通路
- 欧拉通路、回路
- 欧拉通路
- NOIP Dp基本套路大全
- 爬取拉钩
- 例说STM32F7高速缓存——Cache一致性问题(三)
- Mysql插入数据 Incorrect string value: '\xF0\x9F\x98\x84
- 用JavaSwing写一个小学生用的四则运算自测程序
- 求最短通路值
- UVA 140 全排列+暴力
- Leetcode 56. Merge Intervals
- 深度探索C++ 对象模型【第二章2】
- 黑科技之手机与电脑之间的远程管理
- bzoj 3679: 数字之积
- msp430输出PWM波
- JavaScript
- python学习-转换物体颜色