码迷,mamicode.com
首页 > 其他好文 > 详细

记忆化搜索hdu1078 dfs

时间:2015-07-21 23:32:41      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

 

http://acm.hdu.edu.cn/showproblem.php?pid=1078

题意:给出n*n的格子,每个各自里面有些食物,问一只老鼠每次走最多k步所能吃到的最多的食物

 

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<string.h>
 4 using namespace std;
 5 int dp[110][110],s[110][110];
 6 int n,k,t[4][2]= {1,0,-1,0,0,1,0,-1};
 7 int dfs(int x,int y)
 8 {
 9     int maxx=0,xx,yy,ans;
10     if(!dp[x][y])
11     {
12         for(int i=1; i<=k; i++)
13         {
14             for(int j=0; j<4; j++)
15             {
16                 xx=x+t[j][0]*i;
17                 yy=y+t[j][1]*i;
18                 if(xx>=0&&xx<n&&yy>=0&&yy<n&&s[xx][yy]>s[x][y])
19                 {
20                     ans=dfs(xx,yy);
21                     if(ans>maxx)
22                         maxx=ans;
23                 }
24             }
25         }
26         dp[x][y]=maxx+s[x][y];
27     }
28     return dp[x][y];
29 }
30 int main()
31 {
32     while(scanf("%d%d",&n,&k)>0)
33     {
34         if(n==-1&&k==-1)
35             break;
36         for(int i=0; i<n; i++)
37             for(int j=0; j<n; j++)
38                 scanf("%d",&s[i][j]);
39         memset(dp,0,sizeof(dp));
40         int sum=dfs(0,0);
41         printf("%d\n",sum);
42     }
43     return 0;
44 }

 

记忆化搜索hdu1078 dfs

标签:

原文地址:http://www.cnblogs.com/SSYYGAM/p/4665754.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!