zoukankan      html  css  js  c++  java
  • 编程题1

    题目描述:寻找一条从左上角arr[0][0]到右下角arr[m-1][n-1]的路线,使得沿途经过的数组中的整数之和最小

    代码:

    java版实现:

    public class FindRoute {
    
        public static int getMinPath(int[][] arr){
            if (arr == null || arr.length == 0){
                return 0;
            }
            int row = arr.length;
            int col = arr[0].length;
    
            // 用来保存计算的中间值
            int[][] cache = new int[row][col];
            cache[0][0] = arr[0][0];
    
            for (int i = 1; i < col; i++){
                cache[0][i] = cache[0][i - 1] + arr[0][i];
            }
            for (int j = 1; j < row; j++){
                cache[j][0] = cache[j - 1][0] + arr[j][0];
            }
            System.out.println("["+(0)+","+0+"]:  " + arr[0][0]);
            // 在遍历二维数组的过程中不断把计算结果保存到cache中
            for (int i = 1; i < row; i++){
                for (int j = 1; j < col; j++){
                    if (cache[i - 1][j] > cache[i][j - 1]){ // 可以确定选择的路线为arr[i][j - 1]
                        cache[i][j] = cache[i][j - 1] + arr[i][j];
                        System.out.println("["+i+","+(j - 1)+"]:  " + arr[i][j - 1]);
                    }else {   // 可以确定选择的路线为arr[i - 1][j]
                        cache[i][j] = cache[i - 1][j] + arr[i][j];
                        System.out.println("["+(i - 1)+","+j+"]:  " + arr[i - 1][j]);
                    }
                }
            }
            System.out.println("[" +(row - 1) + "," + (col - 1) + "]" + arr[row - 1][col - 1]);
            return cache[row - 1][col - 1];
        }
    
    
        public static void main(String[] args){
            int[][] arr = {
    
                    {1,4,3,3},
                    {8,7,5,5},
                    {2,1,5,5},
                    {2,1,5,5}
            };
            System.out.println("路径:");
            System.out.println("最小值为:"+getMinPath(arr));
        }
    }
  • 相关阅读:
    [二叉查找树] 1115. Counting Nodes in a BST (30)
    [最小生成树] 继续畅通工程
    [最小生成树] 畅通工程
    [最小生成树] 还是畅通工程
    [图算法] 1030. Travel Plan (30)
    [图算法] 1003. Emergency (25)
    [并查集] More is Better
    [并查集] How Many Tables
    [并查集] 畅通工程
    [并查集] 通信系统
  • 原文地址:https://www.cnblogs.com/daleyzou/p/9134822.html
Copyright © 2011-2022 走看看