HDU1078
来源:互联网 发布:贝斯谱的软件 编辑:程序博客网 时间:2024/05/21 21:02
题意:
在n*n的网格里面,每个点都有若干块奶酪,老鼠从(1,1)出发,每次最多走k步(只能水平或者竖直行走),且每一次的落脚点必须比上一点的奶酪多,问最多能吃到多少块奶酪。
思路:
网格嘛直接就是dfs来一发记忆化搜索就好了,dp[i][j]表示从点(i,j)出发可以获得的最多奶酪。
代码:
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int n,k,dp[105][105],a[105][105];int to[4][2] = {1,0,-1,0,0,1,0,-1};int check(int x,int y){ if(x<1 || y<1 || x>n || y>n) return 1; return 0;}int dfs(int x,int y){ int ans = 0; if(!dp[x][y])//是否已经计算出结果 { for(int i = 1; i<=k; i++) { for(int j = 0; j<4; j++) { int xx = x+to[j][0]*i; int yy = y+to[j][1]*i; if(check(xx,yy))//越界 continue; if(a[xx][yy]>a[x][y]) ans = max(ans,dfs(xx,yy)); } } dp[x][y] = ans+a[x][y]; } return dp[x][y];}int main(){ int i,j; while(~scanf("%d%d",&n,&k),n>0&&k>0) { for(i = 1; i<=n; i++) for(j = 1; j<=n; j++) scanf("%d",&a[i][j]); memset(dp,0,sizeof(dp)); printf("%d\n",dfs(1,1)); } return 0;}
阅读全文
0 0
- hdu1078
- hdu1078
- hdu1078
- HDU1078
- HDU1078
- hdu1078
- HDU1078
- HDU1078 记忆化搜索
- hdu1078 FatMouse and Cheese
- HDU1078(树形DP+DFS)
- HDU1078(深搜+DP)
- HDU1078(记忆化搜索)
- hdu1078 FatMouse and Cheese
- hdu1078 记忆化搜索
- hdu1078(记忆化搜索)
- HDU1078 FatMouse and Cheese
- hdu1078基础dp
- hdu1078 记忆化搜索
- Gym
- 动态规划总结
- 九大常用排序
- 内网穿透获得meterpreter会话
- 回文数字生成器
- HDU1078
- Android浏览器— —书签\历史
- 《算-入》第二章
- HTTP头域列表与解释 之 request篇
- 51 nod 1424
- HDU 6005 Pandaland[最小生成树][LCA]
- Struts2 的国际化实现
- 复杂链表的复制
- HTTP头域列表与解释 之 response篇