HDOJ 1078 FatMouse and Cheese
来源:互联网 发布:信息推广软件 编辑:程序博客网 时间:2024/05/21 10:30
记忆化深搜应该由后向前递归,记录下数据,再次使用时方可节省时间。
一开始我是由前向后进行,so超时。
#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>#define INF 0x7FFFFFFF#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))int a[105][105],n,k,r[105][105],v[105][105],max;int mov[4][2]= {{0,1},{1,0},{-1,0},{0,-1}};void dfs(int x,int y){ int i,j,x0,y0; if(r[x][y]>max)max=r[x][y]; for(i=0; i<4; i++) { for(j=1; j<=k; j++) { x0=x+mov[i][0]*j; y0=y+mov[i][1]*j; if(x0<0||y0<0||x0>=n||y0>=n||v[x0][y0]==1)continue; if(a[x0][y0]>a[x][y]&&r[x][y]+a[x0][y0]>r[x0][y0]) { r[x0][y0]=r[x][y]+a[x0][y0]; v[x0][y0]=1; dfs(x0,y0); v[x0][y0]=0; } } }}int main(){ int i,j; while(scanf("%d%d",&n,&k),n!=-1&&k!=-1) { for(i=0; i<n; i++) for(j=0; j<n; j++) scanf("%d",&a[i][j]); memset(r,0,sizeof(r)); memset(v,0,sizeof(v)); max=0; r[0][0]=a[0][0]; v[0][0]=1; dfs(0,0); printf("%d\n",max); } return 0;}
- hdoj 1078 FatMouse and Cheese
- HDOJ 1078 FatMouse and Cheese
- HDOJ 1078 FatMouse and Cheese
- hdoj 1078 FatMouse and Cheese 【dp】
- 1078FatMouse and Cheese
- hdoj 1078 FatMouse and Cheese(记忆化搜索)
- HDOJ 1078 FatMouse and Cheese(记忆化搜索)
- hdoj 1078 fatmouse and cheese 记忆化搜索
- HDOJ 1078 FatMouse and Cheese 记忆化搜索模板
- HDOJ 1078 FatMouse and Cheese (DFS+DP)
- hdu/hdoj 1075 FatMouse and Cheese
- 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
- hdu-1078-FatMouse and Cheese
- HDU 1078 FatMouse and Cheese
- Session与PHP之session_start()
- yii 三级地区联动
- 内存分配粒度vs内存分页大小vs内存空间
- java生态系统:二、java文档注释
- 施耐德电气面试(一)
- HDOJ 1078 FatMouse and Cheese
- Android Bluetooth Stack: Bluedroid(二):AVRCP演进
- Linux 解压缩命令大全
- Android 项目代码混淆
- [Android UI界面] 如何在activity中动态的设置TextView上字体的颜色
- 运维小记
- 软件测试类工具大全2009版
- Quantum的权限认证(3)
- No.4 在二元树中找出和为某一值的所有路径