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

hdu--1078--记忆化搜索

时间:2014-07-16 18:55:30      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   art   

啊 真无语 ~

这题 一读完 就有感觉是 记忆化搜索 但就是一下子写不出来 =-=

后来参考了别人的代码 发现还是有模糊的地方

好好记住就是了 ~

      touch  me

bubuko.com,布布扣
 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 const int size = 110;
 6 int sum;
 7 int n , m;
 8 int dir[4][2]={1,0,0,1,-1,0,0,-1};
 9 int arr[size][size];
10 int dp[size][size];
11 
12 int dfs( int x , int y )
13 {
14     int mmax = 0;
15     if( dp[x][y] )
16         return dp[x][y];
17     for( int i = 1 ; i<=m ; i++ )
18     {
19         for( int j = 0 ; j<4 ; j++ )
20         {
21             int xx = x + (dir[j][0])*i;
22             int yy = y + (dir[j][1])*i;
23             if( arr[xx][yy]>arr[x][y] && xx>=0 && xx<n && yy>=0 && yy<n )
24             {
25                 mmax = max( mmax , dfs(xx,yy) );
26             }
27         }
28     }
29     dp[x][y] = mmax + arr[x][y];
30     if( sum<dp[x][y] )
31         sum = dp[x][y]; 
32     return dp[x][y];
33 }
34 
35 int main()
36 {
37     cin.sync_with_stdio(false);
38     int i , j;
39     while( cin >> n >> m )
40     {
41         sum = 0;
42         memset( dp , 0 , sizeof(dp) );
43         if( n==-1 && m==-1 )
44             break;
45         for( i = 0 ; i<n ; i++ )
46         {
47             for( j = 0 ; j<n ; j++ )
48             {
49                 cin >> arr[i][j];
50             }
51         }
52         dfs( 0 , 0 );
53         cout << sum << endl;
54     }
55     return 0;
56 }
View Code

递归的思想 真的很重要 从后往前 得到结果~

hdu--1078--记忆化搜索,布布扣,bubuko.com

hdu--1078--记忆化搜索

标签:style   blog   http   color   os   art   

原文地址:http://www.cnblogs.com/radical/p/3844919.html

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