小菜找实习——阿里3.25场笔试第一题(矩阵数组最小差值和)

这篇博客介绍了如何解决阿里笔试中的一道关于找到矩阵数组最小差值和的问题。作者指出,对于不熟悉Viterbi算法的考生,这个问题可能较难解答。博客通过动态规划的方法解释了问题的解决方案,提出了状态转移方程,并给出了初始条件和计算顺序。最后,博主分享了相关代码以帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

明天晚上就要笔试了,又有新的原题来参考练手了,这道题如果不知道viterbi算法可能通过dp有点难做出来。

所以说学习是永无止境的hhh!

图源自牛客论坛上(话说他们是怎么截图的,难道这样不算作弊吗,不太懂笔试的规则)

输入描述

4

5 9 5 4 4
4 7 4 10 3
2 10 9 2 3

输出描述

5

确定状态

Viterbi算法是说每到一个状态就记录下到当前状态的最值,然后以此为基准向后推进(因此就是动态规划的思想)

dp[i][j]表示走到第i行第j列的最小值

状态转移方程

dp[i][j] = min{ dp[k][j-1] +abs{matrix[i][j]-matrix[k][j-1]},dp[i][j]}   {k=0,1,2}

初始状态和边界条件

dp[k][0] = 0 (第一列的差值为0)  

计算顺序

dp[0][1] dp[1][1]  dp[2][1]

....

dp[0][n-1] dp[1][n-1] dp[2][n-1]

最终返回值:min{dp[0][n-1] dp[1][n-1] dp[2][n-1]}

 

代码

public static void s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值