HDU ACM 1078 FatMouse and Cheese 记忆化+DFS
来源:互联网 发布:onavo mac版 编辑:程序博客网 时间:2024/05/01 03:57
题意:FatMouse在一个N*N方格上找吃的,每个点(x,y)有一些吃的,FatMouse从(0,0)的出发去找吃的,每次最多走k步,他走过的位置可以吃掉吃的,保证吃的数量在0-100,规定他只能水平或者垂直走,每走一步,下一步吃的数量需要大于此刻所在位置,问FatMouse最多可以吃多少东西。
需要对步数进行扩展。
#include<iostream>using namespace std;#define N 101#define max(a,b) ((a)>(b)?(a):(b))int dp[N][N],map[N][N];int k,n;int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};bool ok(int x,int y) //判断边界{return x>=0 && y>=0 && x<n && y<n;}int dfs(int x,int y) //记忆化搜索{int i,j,max=0,xt,yt,tmp;if(dp[x][y]>0)return dp[x][y];for(i=0;i<4;i++)for(j=1;j<=k;j++){xt=dir[i][0]*j+x;yt=dir[i][1]*j+y;if(ok(xt,yt)&&map[x][y]<map[xt][yt]){tmp=dfs(xt,yt);if(tmp>max) //找到最大的max=tmp;}}dp[x][y]=max+map[x][y];return dp[x][y];}int main() {int i,j;while(scanf("%d%d",&n,&k)==2 && k!=-1 && n!=-1){for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&map[i][j]);memset(dp,0,sizeof(dp));cout<<dfs(0,0)<<endl;} return 0; }
0 0
- HDU ACM 1078 FatMouse and Cheese 记忆化+DFS
- hdu 1078 FatMouse and Cheese (dfs+记忆化搜索)
- [HDU 1078]FatMouse and Cheese(记忆化DFS)
- HDU--1078 -- FatMouse and Cheese [记忆搜索] [DFS]
- hdu 1078 FatMouse and Cheese dfs 记忆化搜素
- 杭电1078 FatMouse and Cheese DFS 记忆化搜索
- 【DFS(记忆化)】hdu 1078 FatMouse and Cheese(poj 1088 滑雪)
- 暑期dp46道(19)HDU 1078 FatMouse and Cheese dfs+记忆化搜索
- HDU 1078 FatMouse and Cheese (dfs + dp记忆化搜索)
- hdu 1078 fatmouse and cheese 记忆化搜索
- hdu 1078 FatMouse and Cheese(深搜----记忆化搜索)
- hdu 1078 FatMouse and Cheese(dp 记忆化搜索)
- hdu 1078 FatMouse and Cheese(记忆化搜索)
- hdu 1078 FatMouse and Cheese 记忆化搜索
- hdu 1078 FatMouse and Cheese (记忆化搜索 )
- HDU 1078 FatMouse and Cheese(记忆化搜索)
- hdu 1078 FatMouse and Cheese 记忆化dp
- hdu(1078) FatMouse and Cheese (记忆化搜索+dp)
- GRE写作——issue写作流程
- 程序员是碗青春饭,如何才能让自己不过时?
- 为什么编程时间从1970年1月1日开始?
- win8+XAML Binding(数据绑定)
- 一道题检测是否理解指针
- HDU ACM 1078 FatMouse and Cheese 记忆化+DFS
- exec函数
- 教你如何购买笔记本电池
- 判断点P是否在三角形ABC内部
- python 第三方模块安装路径
- Java高级编程:堵塞队列
- 安卓学习笔记之selector
- 黑马程序员——Java基础------IO流之字符流、字节流和缓冲区。
- 转:Linux的inode的理解