使用动态规划获取矩阵中路径点坐标的MATLAB代码
若要输出途径点的坐标位置,需要在动态规划的过程中记录路径信息。可以使用一个与矩阵大小相同的二维数组'path',用于记录每个位置的路径来源。
修改后的MATLAB代码如下:
% 读取Excel文件中的矩阵数据
matrix = xlsread('your_excel_file.xlsx');
% 创建dp数组和path数组,初始化起始点的值
dp = zeros(size(matrix));
path = cell(size(matrix));
dp(91, 20) = matrix(91, 20);
dp(80, 140) = matrix(80, 140);
% 动态规划,更新dp数组和path数组的值
for i = 1:size(matrix, 1)
for j = 1:size(matrix, 2)
if i == 91 && j == 20
continue; % 跳过起始点
end
if i == 80 && j == 140
continue; % 跳过起始点
end
if i > 1 && dp(i, j) < dp(i-1, j) % 从上方到达该位置
dp(i, j) = dp(i-1, j);
path{i, j} = [i-1, j];
end
if j > 1 && dp(i, j) < dp(i, j-1) % 从左方到达该位置
dp(i, j) = dp(i, j-1);
path{i, j} = [i, j-1];
end
dp(i, j) = dp(i, j) + matrix(i, j); % 更新当前位置的最大值
end
end
% 输出最终的最大值
max_value = dp(end, end);
disp(max_value);
% 输出路径信息
path_coordinates = [size(matrix, 1), size(matrix, 2)];
while ~isempty(path_coordinates)
x = path_coordinates(1);
y = path_coordinates(2);
disp([x, y]); % 输出途径点的坐标位置
path_coordinates = path{x, y};
end
请注意,最后的disp([x, y])行会输出途径点的坐标位置。你可以根据需要进行进一步的处理,例如将途径点的坐标位置保存到一个数组中,或者进行其他操作。
原文地址: https://www.cveoy.top/t/topic/PkG 著作权归作者所有。请勿转载和采集!