用C语言写出代码。有一个5*5的棋盘,每一个棋盘格上有一定数量的豆豆,大嘴巴最开始从

大嘴巴吃豆豆:
有一个5*5的棋盘,每一个棋盘格上有一定数量的豆豆,大嘴巴最开始从最左上角的格开始吃起,然后可以选择走到下一格去吃豆豆,或走到右边一格去吃豆豆
(注意,大嘴巴不能向上或向左走,同时也不能走出棋盘),这样一直走一直吃,直到到达最右下一格为止。
如下图是一种走法

当然选择不同的路线,会吃到不同数量的豆豆,大嘴巴希望能吃到最多的豆豆,请编程实现输入棋盘上豆豆的分布情况,输出大嘴巴能吃到的最多豆豆数量。

输入格式
5行,每行5个数,代表每一格上的豆豆数量
输出格式
吃到的最多豆豆数量
输入样例
2 5 6 3 7
3 7 9 2 1
3 5 8 6 3
2 4 6 8 4
9 8 3 5 2
输出样例
52

比如这个豆豆数量存在int a[][]这个数组里,坐标从1开始存,然后一个n*n的棋盘,你这里可以使n = 5

然后动态规划
int dp[][];
memset(dp,0,sizeof(dp));
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
dp[i][j] = max(dp[i-1][j],dp[i][j-1]) + a[i][j];
}
}
然后dp[n][n]就是最多的豆豆数量追问

可以使用遍历所有路径的算法吗?

追答

dfs,深度遍历算法,你可以自己去研究下,不过效率低下而且有点程序小多,我就不给你写代码了

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网