动态规划Matlab代码

这是是一个MATLAB中动态规划算法的例子,它可以在路径网格中找到最小代价路径

function [cost, path] = dynamicProgramming(grid)
% Dynamic programming algorithm to find the minimum cost path in a grid
% grid: matrix representing the grid
% cost: minimum cost
% path: minimum cost path

[rows, cols] = size(grid);

% Initialize the cost and path arrays
cost = zeros(rows, cols);
path = zeros(rows, cols);

% Initialize the first row and column of the cost and path arrays
cost(1,:) = cumsum(grid(1,:));
path(1,:) = 1:cols;
cost(:,1) = cumsum(grid(:,1));
path(:,1) = 1:rows;

% Iterate through the rest of the grid
for i = 2:rows
    for j = 2:cols
        % Find the minimum cost to reach the current cell
        [minCost, minIndex] = min([cost(i-1,j), cost(i,j-1)]);
        cost(i,j) = grid(i,j) + minCost;
        % Update the path based on the minimum cost
        if minIndex == 1
            path(i,j) = path(i-1,j);
        else
            path(i,j) = path(i,j-1);
        end
    end
end

% Extract the minimum cost path
[row, col] = size(path);
i = row;
j = col;
minPath = [i, j];
while i > 1 || j > 1
    if i > 1 && j > 1
        [~, minIndex] = min([cost(i-1,j), cost(i,j-1)]);
    elseif i > 1
        [~, minIndex] = min([cost(i-1,j)]);
    else
        [~, minIndex] = min([cost(i,j-1)]);
    end
    if minIndex == 1
        i = i - 1;
    else
        j = j - 1;
    end
    minPath = [minPath; [i,j]];
end

% Reverse the path so it starts from the top left corner
path = fliplr(minPath);

end

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真的是小恐龙吗?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值