青青子衿abc 2022-05-19 15:59 采纳率: 50%
浏览 198
已结题

动态规划问题,请大家看一下

两台月球矿车从A点向B点移动探测,每台矿车每次可以向右或向下移动一步,移动到的位置对应的数据为可采集的矿石数量 假设每台矿车矿石装载量无限,请求出两台矿车都到达B点后采集到的矿石数量总和最大值,并将他们经过的路径输出 动态规划问题
算法思想 代码和伪代码 复杂度(空间和时间)

img

  • 写回答

4条回答 默认 最新

  • 七号公园的忧伤 Java领域新星创作者 2022-05-19 18:16
    关注

    可以当作一辆车,第一辆车先走,采集过的置为0,然后第2辆车再走。简单的动态规划问题:

    class Solution{
        public static void run(int[][] arr, String name){
            List<int[]> res = new ArrayList<>();
            int row = arr.length;
            int column = arr[0].length;
            int[][] temp = new int[row][column];
            for(int i = 0;i<row; i++) {
                for (int j = 0; j < column; j++) {
                    int top = i > 0 ? temp[i - 1][j] : 0;
                    int left = j > 0 ? temp[i][j - 1] : 0;
                    temp[i][j] = Math.max(top, left) + arr[i][j];
                }
            }
            int car = temp[row-1][column-1];
            System.out.println(name + "最大值:" + car);
            //获取car1的路径
            res.add(new int[]{row-1,column-1});
            int i = row-1,j=column-1;
            while (i >0 && j>0){
                int top =temp[i-1][j];
                int left = temp[i][j-1];
                if(top >= left){
                    i--;
                }else{
                    j--;
                }
                res.add(new int[]{i, j});
                arr[i][j] = 0;
            }
            while (i-- > 0){
                arr[i][0] = 0;
                res.add(new int[]{i, 0});
            }
            while (j-- > 0){
                arr[0][j] = 0;
                res.add(new int[]{0, j});
            }
            System.out.println(name + "路径:");
            for (int k = res.size()-1; k>=0;--k){
                System.out.print(Arrays.toString(res.get(k)));
            }
            System.out.println();
        }
    
        public static void main(String[] args) {
            int[][] a = new int[][]{{0,2,2,2,2},{0,1,0,0,2},{0,0,0,0,2},{0,0,0,0,2},{0,0,0,0,0}};
            run(a, "car1");
            run(a, "car2");
        }
    }
    
    

    img


    给个采纳吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月28日
  • 已采纳回答 5月20日
  • 创建了问题 5月19日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看