动态规划求解国际象棋中车点到点的最短路径总数
2014-05-15 17:49
274 查看
题目:国际象棋中的车可以水平或竖直移动。一个车从棋盘的一角(0,0)移动到另一角(n,n),有多少种最短路径。
分析:对于n*n的棋盘,从(0,0)移动到(n,n)的最短路径总数应该为C(2n, n), 因为必走2n步,其中n步向左,剩下为向右。
分析:对于n*n的棋盘,从(0,0)移动到(n,n)的最短路径总数应该为C(2n, n), 因为必走2n步,其中n步向左,剩下为向右。
public class ShortestStepsInChess { // from (0,0) to (n,n) // count[i,j] = count[i-1,j] + count[i,j-1] public static int cal(int n) { int[][] count = new int[n + 1][n + 1]; for (int i = 0; i <= n; i++) { count[0][i] = 1; // (0,0) walk to (0,i) use i steps, just 1 solution count[i][0] = 1; // (0,0) walk to (i,0) use i steps, just 1 solution } for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) { count[i][j] = count[i - 1][j] + count[i][j - 1]; assert count[i][j] == SetUtils.combination(i + j, i); } return count ; } public static void main(String[] args) { System.out.println(cal(4)); } }
相关文章推荐
- [al] 关于多部带权图的最短路径的动态规划求解
- Floyd算法:用动态规划求解多源(全源)最短路径
- 每周算法练习——用动态规划求解最短路径问题
- 迪杰斯特拉算法求解最短路径(三)---《动态规划》
- [Qt][Floyd算法] 动态规划求解最短行驶路径 源码及演示程序
- Floyd-Warshall算法求解所有结点对的最短路径问题Java实现
- 最短增益路径法求解最大流问题(可随机生成有向图)
- 分支定界算法求解带有约束条件的最短路径问题
- 动态规划(4)详细讲解各最短路径算法及比较
- 迷宫最短路径求解
- 无向图的最短路径求解算法之——Dijkstra算法
- Dijkstra算法求解单源最短路径
- Dijkstra求解单源点最短路径
- 动态规划实例(十五):最短路径Floyd
- 差限问题求解利用Bell-ford算法构造差限图通过最短路径求解
- 无向图的最短路径求解算法之——Dijkstra算法【转】
- SRM 624 D1L2:DrivingPlans,求解所有的最短路径
- 动态规划(算法+理论) ★最短路径
- 求解迷宫问题的所有路径及最短路径程序
- 赛车游戏中求解最短路径和最小曲率路径