拜访
来源:互联网 发布:彩金双明牌算法 编辑:程序博客网 时间:2024/04/28 05:06
package 拜访;/** * Created by h on 16-12-26. */public class Solution { public int countPath(int[][] map, int n, int m) { int startX = 0; int startY = 0; int endX = 0; int endY = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (map[i][j] == 1) { startX = i; startY = j; } if (map[i][j] == 2) { endX = i; endY = j; } } } int[][] dp = new int[n][m]; if (startX == endX || startY == endY) return 1; // one if (startX > endX && startY < endY) { // 从右上到左下 return processOne(startX, startY, endX, endY, map, dp); } if (startX < endX && startY > endY) { // 从右下到左上 return processOne(endX, endY, startX, startY, map, dp); } // another if (startX < endX && startY < endY) { // 从右下到左上 return processAnother(endX, endY, startX, startY, map, dp); } if (startX > endX && startY > endY) { return processAnother(startX, startY, endX, endY, map, dp); } return 1; } // 第二个 private int processAnother(int startX, int startY, int endX, int endY, int[][] map, int[][] dp) { for (int i = startX - 1; i >= endX; i--) { if (map[i][startY] != -1) { dp[i][startY] = 1; } else { break; } } for (int i = startY - 1; i >= endY; i--) { if (map[startX][i] != -1) { dp[startX][i] = 1; } else { break; } } for (int j = startX - 1; j >= endX; j--) { for (int i = startY - 1; i >= endY; i--) { if (map[j][i] == 0 || map[j][i] == 2 || map[j][i] == 1) { if(j+1<dp.length) dp[j][i] += dp[j + 1][i]; if(i+1<dp[0].length) dp[j][i] += dp[j][i + 1]; } } } return dp[endX][endY]; } // 第一个 private int processOne(int startX, int startY, int endX, int endY, int[][] map, int[][] dp) { // set bound for (int i = startX - 1; i >= endX; i--) { if (map[startY][i] != -1) {// row is stable, and col is change dp[startY][i] = 1; } else { break; } } for (int i = startY + 1; i <= endY; i++) { if (map[i][startX] != -1) { dp[i][startX] = 1; } else { break; } } for (int i = startX - 1; i >= endX; i--) { for (int j = startY + 1; j <= endY; j++) { if (map[j][i] == 0 || map[j][i] == 2 || map[j][i] == 1) { dp[j][i] += dp[j][i + 1]; if (j - 1 >= 0) dp[j][i] += dp[j - 1][i]; } } } return dp[startX][startY]; } public static void main(String[] args) { int[][] map = new int[][] { { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0 }, { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 2 } }; int n = map.length; int m = map[0].length; System.out.println(new Solution().countPath(map, n, m)); }}
0 0
- 拜访
- 拜访
- 拜访
- 拜访
- 拜访
- 拜访
- 再次拜访
- 拜访李嘉诚
- 客户拜访
- 牛客 拜访
- 陌生拜访之道
- 专业销售拜访技巧
- 初次拜访客户礼仪
- 这样去做市场拜访
- 拜访客户“十问歌”
- 拜访杜洪超有感
- 拜访各位高手
- 拜访谭浩强老先生
- UVa1404 & LA3998 Prime k-tuple
- WEB安全问题(未完)
- 平均年龄
- java静态代理和动态代理
- [UVA-10305]
- 拜访
- 构造函数的继承关系
- PE 145 How many reversible numbers are there below one-billion? (暴力)
- MyEclipse导入maven项目的两种方法
- centos7设置ip以及常用命令
- IIS环境
- 集合框架_集合嵌套存储和遍历元素的案例图解、集合嵌套存储和遍历元素的案例代码实现
- vs2013+qt5.5.0创建qt窗口工程
- UGUI Sprite Packer:图集自动ETC1+Alpha