FatMouse and Cheese---hdu1078(记忆化搜索=搜索+dp)
2015-11-04 11:13
330 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1078
题意就是有n*n的地图,每个地方都有食物,数量不同,老鼠在(0,0)的位置每次它最多跳 k 步,每次吃只能吃比当前位置食物多的食物,求最大值;
View Code
题意就是有n*n的地图,每个地方都有食物,数量不同,老鼠在(0,0)的位置每次它最多跳 k 步,每次吃只能吃比当前位置食物多的食物,求最大值;
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std; #define N 110 #define INF 0xffffff int n, k, dp , a ; int dir[4][2]= {{1,0},{-1,0},{0,-1},{0,1} }; int DFS(int x, int y) { int Max=0, sum; if(dp[x][y]==-1) { for(int i=1; i<=k; i++) { for(int j=0; j<4; j++) { int xx=x+dir[j][0]*i; int yy=y+dir[j][1]*i; if(xx<n&&xx>=0 && yy<n&&yy>=0 && a[xx][yy]>a[x][y]) { sum=DFS(xx, yy); Max=max(Max, sum); } } } dp[x][y]=Max+a[x][y]; } return dp[x][y]; } int main() { ///freopen("In.txt", "r", stdin); while(scanf("%d%d", &n, &k), n!=-1||k!=-1) { memset(a, 0, sizeof(a)); memset(dp, -1, sizeof(dp)); for(int i=0; i<n; i++) for(int j=0; j<n; j++) scanf("%d",&a[i][j]); int ans = DFS(0,0); printf("%d\n", ans); } return 0; }
View Code
相关文章推荐
- shell脚本编程之变量
- 优化分析:移动应用最重要的指标
- 欢迎使用CSDN-markdown编辑器
- Android实现热门标签的流式布局
- cf592d Super M 树的直径 + 树形dp
- 【Java】【Flume】Flume-NG启动过程源码分析(二)
- PHP 正则表示式
- 调用命令行的函数
- 增加窗体边框3D效果
- Java Main如何被执行?
- Android开发之EditText属性详解
- 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
- Android 屏幕适配
- IOS 版本升级提示
- 32位Linux单进程有4G内存的限制
- Odoo8查询产品时提示"maximum recursion depth exceeded while calling a Python object"
- spring数据库读写分类实现方式(现公司使用方式)
- PHP知识点精讲系列之:前言
- excell导出到本地
- C++资源释放