Optimization 在具有正整数的2D矩阵中查找路径中的最大和
我想知道我在哪里可以读到有效解决此问题的算法:Optimization 在具有正整数的2D矩阵中查找路径中的最大和,optimization,matrix,path,sum,max,Optimization,Matrix,Path,Sum,Max,我想知道我在哪里可以读到有效解决此问题的算法: 允许四个方向:上、下、左、右 无法访问包含零的单元格 两次访问同一牢房是非法的 围绕边移动换行: (第一行与最后一行相连) (第一列与最后一列相连) 示例5x5和5个步骤: 9 1 3 1 9 6 3 2 4 1 0 7 * 7 7 5 4 9 4 9 7 9 1 5 5 起点:* 解决方案:向下,向左,向下,向左,向下。即9+4+9+7+9=38 [9] 1 3 1 9
- 允许四个方向:上、下、左、右
- 无法访问包含零的单元格
- 两次访问同一牢房是非法的
- 围绕边移动换行:
- (第一行与最后一行相连)
- (第一列与最后一列相连)
9 1 3 1 9
6 3 2 4 1
0 7 * 7 7
5 4 9 4 9
7 9 1 5 5
起点:*
解决方案:向下,向左,向下,向左,向下。即9+4+9+7+9=38
[9] 1 3 1 9
6 3 2 4 1
0 7 * 7 7
5 [4][9] 4 9
[7][9] 1 5 5
此问题可能与以下方面无关:
- 求最大子矩阵
- 动态规划
up
”和“down
”是反向的,因为我输入数据的方式不同)
对于饱和程度较低的问题,可能需要添加绑定/剪切方法。您可以按如下方式生成绑定:
首先,运行NxN矩阵并收集K个最高值元素(可以在N²log K中完成),然后按max First对它们进行排序。然后,累积计算值UB[t]=SUM[i::0->t]SortedElements[i]。因此,任何t长度路径都有UB[t](最大t个元素)的UB
在步骤T,当前分支的UB是UB[T]。如果值为[T]+UB[K-T]游戏或谜题。给定一个矩阵、步数和一个和,找到路径。 如果有一个真实的应用程序,那就太好了,但我还没有找到它。 游戏往往会在年轻人的大脑中“燃烧”知识,所以为什么不燃烧一些有用的东西,比如加法呢
#include<iostream>
#include<climits>
#define R 3
#define C 3
int MAX(int x, int y, int z);
int Max_Cost(int cost[R][C], int m, int n)
{
if (n < 0 || m < 0)
return INT_MIN;
else if (m == 0 && n == 0)
return cost[m][n];
else
return cost[m][n] + MIN( Max_Cost(cost, m-1, n-1),
Max_Cost(cost, m-1, n),
Max_Cost(cost, m, n-1)
);
}
int MAX(int x, int y, int z)
{
return max(max(x, y), z);
}
int main()
{
int cost[R][C] = { {3, 2, 5},
{5, 8, 2},
{9, 7, 1}
};
cout<<Max_Cost(cost, 2, 1);
return 0;
}
#包括
#定义R3
#定义c3
int MAX(int x,int y,int z);
整数最大成本(整数成本[R][C],整数m,整数n)
{
if(n<0 | | m<0)
返回INT_MIN;
else如果(m==0&&n==0)
退货成本[m][n];
其他的
退货成本[m][n]+最低(最高成本(成本,m-1,n-1),
最大成本(成本,m-1,n),
最大成本(成本,m,n-1)
);
}
最大整数(整数x,整数y,整数z)
{
返回最大值(最大值(x,y),z);
}
int main()
{
int cost[R][C]={{3,2,5},
{5, 8, 2},
{9, 7, 1}
};
请澄清一下,路径长度“k”是一个输入参数?是的,路径长度是一个输入参数。总和和路径是输出参数。矩阵大小n和路径长度k之间有关系吗?我认为在k