算法:求矩阵的最大和路径问题

求矩阵的最大和路径问题
题目描述:有一个m×n的矩阵,现要从左上角走到右下角,并且方向只能是向下或者向右,

现规定一条路径的权值为走此路径所经过的值的和。给定一个矩阵,请找出最大和。

Example:矩阵D为输入矩阵
在这里插入图片描述
矩阵P为走到每一格的最大和
在这里插入图片描述
我们可以看到填满P矩阵,我们就可以找到最大值了,状态转移方程为:
P[i, j] = D[i, j] + max(P[i -1, j], P[i, j-1])
代码:

int max_path(int m, int n, int **p){
	P[0,0] = D[0][0];
	for(int i = 1; i < m; i++){
		P[i][0] = D[i][0] +P[i-1][0];
	}
	for(int i = 1; i < n; i++){
		p[0][i] = D[0][i] + P[0][i-1];
	}
	for(int i = 1; i < m-1; i++){
		for(int j =1; j < n-1; j++){
			P[i][j] = D[i][j] + max(P[i-1][j], p[i][j-1]);
	}
	return P[m-1][n-1];
}
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值