【动态规划】【RQNOJ】走卒
2010-07-18 18:00
176 查看
题目描述
【问题背景】空闲之时,下局棋,未尝不好……
【问题描述】
一场恶战,浪子最后只剩下了一个卒。而对方,还有……这场战斗以失败告终。不过浪子突发其想,把一个卒放在一张N*M的棋盘上。每个格子都有个分值。卒每移动到一个格子,就要减少那个格子上的分值(先减再走)。假设卒刚开始只有T分,求出卒从左上角走到右下角所剩的最大分值。(为了简化问题,卒只能向左右或向下移动,最左端与最右端是不相连的。即卒在最某行最左端时,只能向右或向下移动;卒在最某行最右端时,只能向左或向下移动。)
当此时,某位同学把浪子喊去开唰(就是拿很多题目来……),浪子只好发到网上来求助。
输入格式
第1行,三个数:N,M,T(1≤N,M≤100,1≤T≤1000)。接下来N行,每行M个数。第I行的第J个数A[I,J]表示这格的分值(0≤A[I,J]≤10)
输出格式
若卒走到右下角时,所剩的最大分值为正,那么输出所剩的最大分值。反之,则输出“DONOT HAVE MORE”(不包括引号)样例输入
#include<stdio.h> int f[101],a[101][101]; int n,m,t,i,j,k; int main() { scanf("%d%d%d",&n,&m,&t); for (i=1;i<=n;++i) for (j=1;j<=m;++j) scanf("%d",&a[i][j]); f[1]=t-a[1][1]; for (i=1;i<=n;++i) { for (k=0;k<m;++k) { if (f[2]-a[i][1]>f[1]) f[1]=f[2]-a[i][1]; for (j=2;j<m;++j) { if (f[j+1]-a[i][j]>f[j]) f[j]=f[j+1]-a[i][j]; if (f[j-1]-a[i][j]>f[j]) f[j]=f[j-1]-a[i][j]; } if ((m>1)&&(f[m-1]-a[i][m]>f[m])) f[m]=f[m-1]-a[i][m]; } if (i<n) for (j=1;j<=m;++j) f[j]-=a[i+1][j]; } if (f[m]>0) printf("%d/n",f[m]); else printf("DONOT HAVE MORE/n"); return 0; }
相关文章推荐
- rqnoj-390-地震了!-动态规划
- 【解题报告】[动态规划] RQNOJ - PID273 / 马棚问题
- 【动态规划】【RQNOJ】庆功会
- 【动态规划】【RQNOJ】大地的秘密
- rqnoj-390-地震了!-动态规划
- 【动态规划】【RQNOJ】第2题 开心的金明 C源码
- 【解题报告】[动态规划] RQNOJ - PID105 / 核电站问题
- 【动态规划】【RQNOJ】书的复制
- 【解题报告】[动态规划] RQNOJ - PID38 / 串的记数
- 【动态规划】【RQNOJ】公司聚会
- 【动态规划】【RQNOJ】马棚问题
- 【动态规划】【RQNOJ】科技庄园
- RQNOJ--15--采药(动态规划)
- 【解题报告】[动态规划] RQNOJ - PID15 / 采药
- 【动态规划】【RQNOJ】乘积最大
- 【动态规划】【RQNOJ】mty的格斗
- 【解题报告】[动态规划]RQNOJ - PID82 / 又上锁妖塔
- 【解题报告】[动态规划]RQNOJ - PID72 / 拔河比赛
- 【动态规划】【RQNOJ】可怜的Oliver
- 【解题报告】[动态规划] RQNOJ PID5 / 能量项链