【发布时间】:2020-12-30 10:23:50
【问题描述】:
我有一个二维数组
行数 = H
列数 = W
二维数组本身 = arr
都是整数
我的任务是返回从第一行的每个点开始的垂直线的最低总和
输入
1 2 3
4 5 6
7 8 9
输出 12
我想了一种通过使用递归来解决这个问题的方法,但我没有得到正确的结果。
该函数采用数组,我想计算最小总和的位置(应该在第一行,因为它是一行)列数和行数,res 是返回总和 res 在主函数中初始化通过 arr 在第 x 行和第 y 列
我确信这个想法,但我总结的方式可能是错误的
static int Summ(int [,]arr,int x,int y,int W,int H,int res)
{
if (x == H - 1)
res += arr[x, y];
else
if (y == 0)
res += Math.Min(Summ(arr, x + 1, y, W, H, res), Summ(arr, x + 1, y + 1, W, H, res));
else if (y== W-1)
res += Math.Min(Summ(arr, x + 1, y, W, H, res), Summ(arr, x + 1, y - 1, W, H, res));
else
res+= res += Math.Min(Math.Min(Summ(arr, x + 1, y, W, H, res), Summ(arr, x + 1, y + 1, W, H, res)),Summ(arr,x+1,y-1,W,H,res));
return res;
}
【问题讨论】:
-
"垂直线的最低总和从第一行的每个点开始",这没有任何意义。介意创建一个小网格并用颜色绘制那些线吗?或者将这些线的每个点的索引设置为一个简单的网格。
-
如果我理解正确您的问题:您想从 {0,0} 开始构建一棵树。其中节点 {x,y} 的所有子节点都是 {{x+1, y-1},{x+1,y},{x+1,y+1}}。对于 3x3,最终的树将如下所示:i.stack.imgur.com/lVlw9.png
-
首先尝试实现这条路径,然后做 sum ,并且只对树末尾的结果 sum 做 mni。之前的任何最低限度都可能导致您走错路。
-
我无法通过堆栈溢出发布此问题 放置代码时总是出错,尽管堆栈交换在放置代码时具有相同的约束,但我能够通过无法编辑的方式发布我的问题但是如果在这里选择编辑它不会让我保存更改即使我没有真正改变任何东西所以很抱歉因为你的问题我使用递归解决了它做了树和分析并将它发送给 TA 现在我需要将其转换为动态的可能是自下而上的
-
对不起,因为问题不清楚,但由于病毒,我无法上大学获得支持,而且很难写出我对 sol 的看法。