首页 > 解决方案 > 3参数最小比较问题c ++

问题描述

我试图找到一个数组的最小成本路径。该代码在限制为向下或向右移动时有效,但不能沿对角线移动。

问题:

return min(findMinCost( cost, m - 1, n), 
           findMinCost(cost, m, n - 1), 
           findMinCost(cost, m - 1, n - 1)) + cost[m - 1][n - 1];

我为对角线运动添加了第三个参数,但似乎我无法使用 min 比较 3 个参数。进行这种比较的最简单方法是什么?谢谢!

标签: c++

解决方案


在 c++min中可以接受 2 个参数。你应该像这样计算最小值,

return min(
          min(findMinCost( cost, m - 1, n), 
              findMinCost(cost, m, n - 1)), 
              findMinCost(cost, m - 1, n - 1)) + cost[m - 1][n - 1];

这样,您首先会找到 和 之间的findMinCost( cost, m - 1, n)最小值findMinCost(cost, m, n - 1)。然后找到第一个最小值和 的最小值findMinCost(cost, m - 1, n - 1)。就像如果你想找到最小值a,b,c

int x = min(a, b);
int min = min(x, c);

推荐阅读