小墨在努力!!
吗了个b的。。。。。

感觉有点水啊,不过我怎么感觉自己没呢dp的思维啊

 1 Source Code
2
3 Problem: 1088 User: XXX
4 Memory: 248K Time: 0MS
5 Language: C++ Result: Accepted
6
7 Source Code
8 #include <stdio.h>
9 #include <string.h>
10 int num[102][102] ,dp[102][102];
11 int slove(int i ,int j)
12 {
13 if(dp[i][j] != -1) return dp[i][j];
14 else
15 {
16 if(num[i][j] < num[i][j - 1] && num[i][j] < num[i][j + 1] && num[i][j] < num[i + 1][j] && num[i][j] < num[i - 1][j])
17 return 0;
18 else
19 {
20 int max = -1;
21 if(num[i][j] > num[i][j - 1])
22 {
23 if(dp[i][j - 1] == -1)
24 dp[i][j - 1] = slove(i ,j - 1);
25 if(dp[i][j - 1] > max) max = dp[i][j - 1];
26 }
27 if(num[i][j] > num[i][j + 1])
28 {
29 if(dp[i][j + 1] == -1)
30 dp[i][j + 1] = slove(i ,j + 1);
31 if(dp[i][j + 1] > max) max = dp[i][j + 1];
32 }
33 if(num[i][j] > num[i + 1][j])
34 {
35 if(dp[i + 1][j] == -1)
36 dp[i + 1][j] = slove(i + 1 ,j);
37 if(dp[i + 1][j] > max) max = dp[i + 1][j];
38 }
39 if(num[i][j] > num[i - 1][j])
40 {
41 if(dp[i - 1][j] == -1)
42 dp[i - 1][j] = slove(i - 1 ,j);
43 if(dp[i - 1][j] > max) max = dp[i - 1][j];
44 }
45 return max + 1;
46 }
47 }
48 }
49 int main()
50 {
51 int i ,j ,r ,c;
52 while(scanf("%d %d",&r ,&c) != EOF)
53 {
54 int max = -1;
55 memset(num ,10010 ,sizeof(num));
56 memset(dp ,-1 ,sizeof(dp));
57 for(i = 1 ;i <= r ;i++)
58 for(j = 1 ;j <= c ;j++)
59 scanf("%d",&num[i][j]);
60 for(i = 1 ;i <= r ;i++)
61 for(j = 1 ;j <= c ;j++)
62 {
63 dp[i][j] = slove(i ,j);
64 if(dp[i][j] > max)
65 max = dp[i][j];
66 }
67 printf("%d\n" ,max + 1);
68 }
69 return 0;
70 }

 

posted on 2012-02-25 14:02  小墨在努力!!  阅读(182)  评论(0编辑  收藏  举报