首页 > 代码库 > HDU 1078 FatMouse and Cheese
HDU 1078 FatMouse and Cheese
记忆化搜索,第一次做搜索,好好学习下!
dir保存了搜索的四个方向,下右上左
这里还懵懵懂懂的,现将模板记下来。=_=!!
1 //#define LOCAL 2 #include <iostream> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6 7 const int maxn = 105; 8 int map[maxn][maxn], dp[maxn][maxn]; 9 int dir[] = {1,0, 0,1, -1,0, 0,-1};10 int n, k;11 12 int dfs(int x, int y)13 {14 if(dp[x][y] != -1)15 return dp[x][y];16 int xx, yy, mmax = 0;17 for(int t = 1; t <= k; ++t)18 {19 for(int i = 0; i < 8;)20 {21 xx = x + t*dir[i++];22 yy = y + t*dir[i++];23 if(xx>=1 && yy>=1 && xx<=n && yy<=n 24 && map[xx][yy] > map[x][y])25 mmax = max(mmax, dfs(xx, yy));26 }27 }28 return dp[x][y] = map[x][y] + mmax;29 }30 31 int main(void)32 {33 #ifdef LOCAL34 freopen("1078in.txt", "r", stdin);35 #endif36 37 while(scanf("%d%d", &n, &k) && (n+k+2))38 {39 memset(dp, -1, sizeof(dp));40 for(int i = 1; i <= n; ++i)41 for(int j = 1; j <= n; ++j)42 scanf("%d", &map[i][j]);43 printf("%d\n", dfs(1, 1));44 }45 return 0;46 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。