|Tyvj|动态规划|P1004 滑雪
2016-08-06 11:15
232 查看
http://tyvj.cn/p/1004
由于考虑高度问题,确保每个值都算出来,这里用的是记忆化搜索。
由于考虑高度问题,确保每个值都算出来,这里用的是记忆化搜索。
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int dx[4] = {1,0,-1,0}; const int dy[4] = {0,1,0,-1}; const int maxrc = 100 + 5; int r,c; int map[maxrc][maxrc]; int f[maxrc][maxrc]; //设f[i][j]为到达[i,j]时最优值 //f[i][j] = max{f[i+a][i+b] | a和b是4个坐标增量,map[i][j]<map[i+a][i+b]} int dfs (int x, int y) { if (f[x][y]!=0) return f[x][y];//算过 int maxt = 1; int t; for (int i=0;i<4;i++) { int tx = x + dx[i], ty = y + dy[i]; if (tx>0&&ty>0&&tx<=r&&ty<=c&&map[tx][ty]>map[x][y]) { t = dfs(tx,ty)+1; maxt = max(t, maxt); } } f[x][y] = maxt; return maxt; } int main () { scanf("%d%d", &r, &c); for (int i=1;i<=r;i++) for (int j=1;j<=c;j++) scanf("%d", &map[i][j]); memset(f, 0, sizeof(f)); int ans = 0; for (int i=1;i<=r;i++) for (int j=1;j<=c;j++) { f[i][j] = dfs(i,j); ans = max(ans, f[i][j]); } printf("%d\n", ans); return 0; }
相关文章推荐
- 【codevs 2152】【Tyvj P1004】【luogu P1434】滑雪
- [TYVJ] P1004 滑雪
- Tyvj专题 P1004 滑雪
- tyvj p1004 滑雪[dp]
- P1004 滑雪 tyvj
- 滑雪(tyvj P1004)
- [百练1088]滑雪(动态规划)
- POJ 1088 滑雪(动态规划)(解题报告)
- poj 1088 滑雪【动态规划】
- 【动态规划】洛谷P1004方格取数
- POJ 1088 Java:滑雪(动态规划)
- POJ 1088 滑雪 -- 动态规划
- Tyvj 1004 滑雪~
- |Tyvj|NOIP1999|动态规划|贪心|P1878 拦截导弹
- POJ——Problem1088(滑雪,动态规划)
- 1088-滑雪问题(动态规划)
- poj 1088 滑雪 动态规划 递归 带备忘
- 动态规划(4)滑雪问题
- 【动态规划】公路乘车 tyvj1015
- P1004 滑雪