回溯算法实现矩阵最小权重路径-Java版本

一、问题说明

矩阵拓扑:

1 2 3

4 5 6

7 8 9

最小权重:21

最小权重路径:

0, 0\] \[0, 1\] \[0, 2\] \[1, 2\] \[2, 2

二、代码实现

java 复制代码
package org.example;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class BackTrace {
    private int min = Integer.MAX_VALUE;
    private int[][] list = new int[3][3];

    private List<int[]> minPath = new ArrayList<>();

    private void search(int n, int row, int column, int curr, List<int[]> path) {
        if (row == n-1 && column == n-1) {
            curr += list[row][column];
            int[] temp = {row, column};
            path.add(temp);

            if (curr < min) {
                min = curr;
                minPath = new ArrayList<>(path);
            }
            return;
        }

        path.add(new int[]{row, column});

        // right column+1
        if (column+1 < n) {
            search(n, row, column+1, curr+list[row][column], path);
        }

        // down row+1
        if (row+1 < n) {
            search(n, row+1, column, curr+list[row][column], path);
        }

        path.remove(path.size()-1);
    }

    public static void main(String[] args) {
        BackTrace backTrace = new BackTrace();
        int i = 1;
        for (int j = 0; j < 3; j++) {
            for (int k = 0; k < 3; k++) {
                backTrace.list[j][k] = i;
                i++;
            }
        }

        for (int j = 0; j < 3; j++) {
            for (int k = 0; k < 3; k++) {
                System.out.print(backTrace.list[j][k] + " ");
            }
            System.out.println();
        }

        List<int[]> path = new ArrayList<>();
        backTrace.search(3, 0, 0, 0, path);
        System.out.println(backTrace.min);

        for (int i1 = 0; i1 < backTrace.minPath.size(); i1++) {
            System.out.print(Arrays.toString(backTrace.minPath.get(i1)) + " ");
        }
    }
}
相关推荐
一水鉴天10 分钟前
整体设计 全面梳理复盘 之37 元级自动化引擎三体项目(Designer/Master/Transformer)划分确定 + 自用规划工具(增强版)
开发语言·算法·transformer·公共逻辑
一勺汤24 分钟前
YOLO12 改进、魔改|秩增强线性注意力RALA,通过增强 KV 缓冲与输出特征的矩阵秩,增强 YOLO 对小目标、复杂场景目标的识别能力
线性代数·yolo·矩阵·yolov12·yolo12·yolo12改进·小目标
爪哇部落算法小助手37 分钟前
爪哇周赛 Round 1
c语言·c++·算法
TT哇1 小时前
【多源 BFS】3.地图中的最⾼点(medium)
算法·宽度优先
dllxhcjla1 小时前
数据结构与算法 第一天
数据结构·算法
再__努力1点1 小时前
【11】特征检测与匹配:AKAZE特征算法详解与实现
人工智能·python·opencv·算法·计算机视觉·特征提取
Bender_ydc1 小时前
一个基于现代 C++23 Modules 的传统文化算法库,使用纯模块化设计实现(包含大六壬、六爻、紫薇斗数、八字、奇门遁甲)
算法·c++23
Kuo-Teng1 小时前
LeetCode 141. Linked List Cycle
java·算法·leetcode·链表·职场和发展
逸风尊者1 小时前
开发需掌握的知识:高精地图
人工智能·后端·算法
资深web全栈开发1 小时前
力扣2536子矩阵元素加1-差分数组解法详解
算法·leetcode·矩阵·golang·差分数组