题目描述:
•Zyc无聊时候写了一个简单的吃金币游戏,规则如下:
•在一个长方形地图上,玩家每次能从一个方格走到相邻一个方格。
•玩家控制的角色可以向下或者向右走,但不能向上或向左走。
•每个方格上都有一定的金币。
•现在,Zyc想请你帮他想一个策略,尽可能多的获得金币。
分析:
可以想到用F[i][j]表示到[i,j]时的最大金币树,因为只可以向左和右移动,也就是说
F[i][j]只与F[i-1][j]和F[i][j-1]有关系
那么,我们可以写出动态规划方程
F[i][j]=max(F[i-1][j],F[i][j-1])+coin[i][j];
代码实现:
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>c;
F[i][j]=max(F[i-1][j],F[i][j-1])+c;
}
cout<<F[n][n]<<ednl;
时间: 2024-10-07 22:47:06