Fork me on GitHub

POJ 1088 滑雪

滑雪
 
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 65004   Accepted: 23795

题目链接: http://poj.org/problem?id=1088

不理他是不是DP的问题了,最终还是用自己熟悉的DFS解决,但隐约地感觉还是有DP的味道,因为你确认从一个点能走多远的时候,你必须先知道四周的那个点能走多远

复制代码
 1 #include<stdio.h>
 2 #include<string.h>
 3 #define MAXN 120
 4 int maze[MAXN][MAXN];
 5 int visit[MAXN][MAXN], value[MAXN][MAXN];
 6 
 7 int dir[4][2] = {{-1, 0}, {0, -1}, {0, 1}, {1, 0}};
 8 
 9 int Traverse(int r, int c, int x, int y)
10 {
11     int i, j, t, temp = 1, max = 0;
12     visit[x][y] = -1;  // -1 表示此时的点还在遍历当中 
13     for(t=0; t<4; ++t)
14     {
15         i = x+dir[t][0];
16         j = y+dir[t][1];
17         if(0<=i && i<r && 0<=j && j<c && maze[i][j] < maze[x][y])
18         {//其实对于这种题印象最深刻的还是得到一个值是建立在得到其他值的基础之上的 
19             if(visit[i][j] == 0) temp = Traverse(r, c, i, j);
20             else if(visit[i][j] != -1) temp = value[i][j];
21             max = temp > max ? temp : max;
22         }
23     }
24     visit[x][y] = 1;
25     value[x][y] = value[x][y] > max+1 ? value[x][y] : max+1;
26     return value[x][y];
27 }
28 int main()
29 {
30 //    freopen("input.txt", "r", stdin);
31     int c, r, temp, i, j;
32     scanf("%d%d", &r, &c);
33     for(i=0; i<r; ++i)
34     for(j=0; j<c; ++j)
35         scanf("%d", &maze[i][j]);
36     memset(visit, 0, sizeof(visit));
37     memset(value, 0, sizeof(value)); //value[i][j] 表示从这个点开始能滑多久 
38     for(i=0; i<r; ++i)
39     for(j=0; j<c; ++j)
40     Traverse(r, c, i, j);
41     temp = 0;
42     for(i=0; i<r; ++i)
43         for(j=0; j<c; ++j)
44             temp = temp > value[i][j] ? temp : value[i][j];
45     printf("%d\n", temp);
46     return 0;
47 }
复制代码

 

posted @   Gifur  阅读(164)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
TOP
点击右上角即可分享
微信分享提示