NY---10---记忆化搜索

先直接上题目 ~

    touch  me

Ah...   有时候 我会纠结 为什么理解了一个算法的思想却写不出代码?

  因为理解的不够深刻嘛?

关于记忆化搜索 因为有dp的状态转移思想在  我这边就不提了 目前 太渣了=-=

主要是因为 好久没更博客了 哎~

今天 和你打了通电话 无言

////////////////////////////////////

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


today:

  生命是华丽的错觉 时间被贼偷走一切

  七岁的那一年抓住那只蝉 以为能抓住夏天

  十七岁的那年吻过他的脸 就以为和她能永远

 

posted @ 2014-07-09 01:02  radical  阅读(163)  评论(0编辑  收藏  举报