聪明的kk(nyoj 171)
2014-02-20 13:49
465 查看
聪明的kk
时间限制:1000 ms | 内存限制:65535 KB难度:3
描述
………………(省略)小动物“KK”正从沙漠区域(矩形)的左上角沿着向右或向下的方向往右下角跑去。KK太聪明了,它居然能在跑的过程中会选择吃掉尽可能多的虫子线路。你知道它吃掉多少虫子吗?
输入第一行:N M (1≤N M≤20 0≤Xij≤500(i=1,2„.N, j=1,2„,M)
)表示沙漠是一个N*M的矩形区域
接下来有N行:每行有M个正整数,Xi1 Xi2 ……Xim 表示各位置中的虫子数(单个空格隔开)
假设“KK”只能向右走或向下走。输出输出有一个整数, 表示“KK”吃掉最多的虫子数。样例输入
3 4 3 1 2 8 5 3 4 6 1 0 2 3
样例输出
24
状态转移方程:dp[ i ] [ j ] = a[ i ] [ j ] + max(dp[ i ] [ j - 1], dp[ i - 1 ][ j ] )
#include <stdio.h> int a[25][25]; int dp[25][25]; int max(int i, int j) { return i > j ? i : j; } int main (void) { int x, y, i, j; while(scanf("%d %d", &x, &y) != EOF) { for(i = 0; i < x; i++) for(j = 0; j < y; j++) scanf("%d", &a[i][j]); dp[0][0] = a[0][0]; for(i = 0; i < x; i++) { for(j = 0; j < y; j++) { if(i - 1 >= 0 && j - 1 >= 0) dp[i][j] = a[i][j] + max(dp[i][j - 1], dp[i - 1][j]); else if(i - 1 < 0) dp[i][j] = a[i][j] + dp[i][j - 1]; else if(j - 1 < 0) dp[i][j] = a[i][j] + dp[i - 1][j]; } } printf("%d\n", dp[x - 1][y - 1]); } return 0; }
相关文章推荐
- NYOJ - 171 聪明的kk
- NYOJ 聪明的kk 171
- NYOJ171 聪明的kk
- NYOJ 171 聪明的kk (dp问题)
- nyoj 171 聪明的kk
- nyoj-171-聪明的kk-数塔变形
- NYOJ171 聪明的kk
- NYOJ 171 聪明的kk(基础dp)
- NYOJ 题目171 聪明的kk
- NYOJ 题目171 聪明的kk(动态规划)
- NYOJ-171-聪明的kk(第三届河南省程序设计大赛D题(简单dp))
- nyoj_171_聪明的kk_201402281518
- NYOJ 171 聪明的kk 【动态规划入门】
- nyoj 171 聪明的kk
- nyoj171聪明的KK(dp动态规划)
- nyoj 171 聪明的kk
- NYOJ-171 聪明的kk
- nyoj 171 聪明的kk 第三届河南省程序设计大赛
- NYOJ-171(动态规划)-题目----------------------------- 聪明的kk
- NYOJ 171-聪明的kk