HDOJ 1078 FatMouse and Cheese 记忆化搜索模板
2016-03-16 21:09
501 查看
记忆花搜索和普通搜索的区别
前者dp思想从终点推到起点也就是祖宗的最优值从他的子孙中的最优值选取
后者枚举从起点到终点刷新一遍
前者dp思想从终点推到起点也就是祖宗的最优值从他的子孙中的最优值选取
后者枚举从起点到终点刷新一遍
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int dp[200][200],mp[200][200],n,k,bu[4][2] = {0,1,0,-1,1,0,-1,0}; bool can(int x,int y) { if(x>=0&&x<n&&y>=0&&y<n)return true; else return false; } int dfs(int x,int y) { if(dp[x][y])return dp[x][y]; int count = 0; for(int j=0;j<4;j++) for(int i=1;i<=k;i++) { int X = x+bu[j][0]*i,Y = y+bu[j][1]*i; if(!can(X,Y))break; if(mp[X][Y]>mp[x][y]) { count = max(count,dfs(X,Y)); } } return dp[x][y] = mp[x][y]+count; } int main() { while(scanf("%d%d",&n,&k)!=EOF) { if(n==-1&&k==-1)break; memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) for(int j=0;j<n;j++) scanf("%d",&mp[i][j]); printf("%d\n",dfs(0,0)); } return 0; }
相关文章推荐
- Android中使用XmlPullParser操作简单的xml文件
- spring小例子-springMVC+mybits整合的小例子
- JVM & Server & Connector & Context Relationship
- 剑指offer替换空格
- (原)从mp4,flv文件中解析出h264和aac,送解码器解码失败
- C语言中函数返回值的问题
- POJ 2386 Lake Counting(简单的深度搜索)
- 剪花布条 (HDU_2087) KMP
- solution Of Pat 1113. Integer Set Partition (25)
- 剑指offer 数值的整数次方
- 剑指offer 调整数组顺序使得奇数位于偶数前面
- 机器学习可行性分析
- Educational Codeforces Round 9
- SQL like子句的另一种实现方法 速度比like快
- ios 之webview的使用
- C++标准模板库
- 虚函数与多态
- 剑指offer 链表中倒数第K个节点
- 239. Sliding Window Maximum
- JS算法总结