poj 1088 滑雪 (dp)
题目链接
题意就不多解释了,题目思路很简单,搜索就行了,但是暴搜会TLE,但是对于每一个dfs(X, Y),如果参数一样的话结果也是一样的,我们用一个二维数组去保存每次计算的位置的结果,最后从所有的解里面挑出一个最大值即可。也许一开始考虑的时候会有这样的想法,是不是从最高的位置开始找就能找到解,或者从最低的位置开始,起始不是这样的,所以我们应该去搜索每一个位置为起点的时候的解。
我还因为一点小问题RE哭了,POJ不支持以下语法,阔以原谅,毕竟OJ很早了
return dp[x][y] = 1;
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn = 110;
int r, c, h[maxn][maxn], dp[maxn][maxn];
int dx[] = {1, -1, 0, 0};
int dy[] = {0, 0, 1, -1};
namespace ans{const int inf = 0x3f3f3f3f;int dfs(int x, int y){if(dp[x][y] >= 0)return dp[x][y];int res = 0;int f = 0;for (int i = 0; i < 4; i++){int xx = x + dx[i];int yy = y + dy[i];if(xx >= 1 && xx <= r && yy >= 1 && yy <= c && h[xx][yy] < h[x][y]){res=max(res, dfs(xx, yy) + 1);f++;}}if(!f) {dp[x][y] = 1;return 1;}dp[x][y] = res;return res;}void MAIN(){scanf("%d %d", &r, &c);for (int i = 1; i <= r; i++){for (int j = 1; j <= c; j++){scanf("%d", &h[i][j]);}}int res = 0;memset(dp, -1, sizeof dp);for (int i = 1; i <= r; i++){for (int j = 1; j <= c; j++){int aans = dfs(i, j);res = max(aans, res);}}printf("%d\n", res);}
}
int main()
{ans::MAIN();return 0;
}
poj 1088 滑雪 (dp)相关推荐
- POJ 1088 滑雪(输出对比)
http://poj.org/problem?id=1088 滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 68159 ...
- poj 1088 滑雪(线性DP)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 81553 Accepted: 30437 Description ...
- POJ - 1088 滑雪 【DP】【DFS】
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...
- poj 1088 滑雪 详解
http://poj.org/problem?id=1088 这是一道dp入门题,不过我一直没想明白应该怎么dp.今天,在做自己学校oj的算法基础题时看到这题,标注着dp的分类,加上我一直都比较喜欢做 ...
- 动态规划 POJ 1088 滑雪
Description Michael 喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知 ...
- POJ 1088 滑雪 (动规)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 75664 Accepted: 28044 Description Mich ...
- poj 1088滑雪
经典的动态规划问题: 1 #include<iostream> 2 3 using namespace std; 4 5 int b[101][101]; 6 int d[101][101 ...
- Fire (poj 2152 树形dp)
Fire (poj 2152 树形dp) 给定一棵n个结点的树(1<n<=1000).现在要选择某些点,使得整棵树都被覆盖到.当选择第i个点的时候,可以覆盖和它距离在d[i]之内的结点,同 ...
- I - 滑雪 POJ - 1088(深搜,记忆化搜索)
Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长底滑坡. ...
最新文章
- C语言截取指定长度子字符串方法
- 几种Normalization算法.md
- 所谓移动IP是指(58);实现移动IP的关键技术是(59)。【答案】D B
- mysql 中文的数据类型_mysql数据类型整理
- 机器学习:选对时机直线超车
- 编程之美2.10 寻找数组中的最大值和最小值
- 三、Ubuntu16.04 安装Jira8.2.2(自带中文包)和破解
- 2019公需科目快速学完_3周考过科目二,是这样做到的!
- Exception Handling Application Block (5)详细解
- tornado celery mysql_tornado中使用celery实现异步MySQL操作
- [TWRP 2.8.4 ] 小米 3W 中文-英文版本 twrp
- 白话计算机入门书籍--《穿越计算机的迷雾》有感
- 如何用VB开发游戏外挂
- 人人都是产品经理2.0
- Matlab批量修改文件格式
- mysql分页合并同类项,人教版初三数学复习目录(全)
- Android 编译优化
- 正版软件,盗版软件和免费软件
- 网络系统结构与设计的基本原则
- 安川机器人编程指令含义