回溯算法实现矩阵最小权重路径-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)) + " ");
        }
    }
}
相关推荐
『昊纸』℃1 小时前
《C语言电子新-2026最新版》-编程语言与程序
数据结构·算法·程序设计·编程语言·软件开发
吃好睡好便好8 小时前
用while循环语句求和
开发语言·学习·算法·matlab·信息可视化
王璐WL8 小时前
【C语言入门级教学】函数的概念2
c语言·数据结构·算法
不知名的忻9 小时前
B 树与 B+ 树:面试完全指南
b树·算法·面试·b+树
运筹vivo@10 小时前
2657. 找到两个数组的前缀公共数组 | 难度:中等
算法·leetcode·职场和发展·哈希表
索木木10 小时前
NCCL SHARP 和 TREE算法
java·服务器·算法
oo哦哦10 小时前
2026年多平台内容管理系统技术选型:从架构设计到工程落地
人工智能·线性代数·矩阵
心中有国也有家11 小时前
hccl 架构拆解:昇腾集合通信库到底在做什么?
人工智能·经验分享·笔记·分布式·算法·架构
小O的算法实验室12 小时前
2026年MCS,Q-learning增强MOPSO与改进DWA融合算法+复杂三维地形下特定移动机器人动态路径规划
算法
2601_9578793312 小时前
短视频矩阵的数据驱动运营:从流量监测到内容迭代的完整技术链路
大数据·矩阵·音视频