随手练——洛谷-P1002 过河卒(动态规划入门)
题目链接:https://www.luogu.org/problemnew/show/P1002
题目还算良心,提醒了结果可能很大,确实爆了int范围,
这是一开始写的版本,用递归做的,先给地图做标记,每到一个点,这个点可以走的话,选择向下走还是向右走,但是会超时。
#include <iostream>
using namespace std; int sign[][];
int M, N;
int res = ;
void move(int i, int j) {
if (i == N && j == M) {
res++;
return;
}
if (i < N&&sign[i + ][j] != )
move(i + , j);
if (j < M&&sign[i][j + ] != )
move(i, j + );
}
void make_mark(int x, int y) {
sign[x - ][y - ] = ;
sign[x - ][y + ] = ;
sign[x + ][y + ] = ;
sign[x + ][y - ] = ; sign[x + ][y - ] = ;
sign[x + ][y + ] = ;
sign[x - ][y - ] = ;
sign[x - ][y + ] = ; sign[x][y] = ;
} int main() {
int x, y;
cin >> N >> M >> x >> y;
make_mark(x, y);
move(, );
cout << res << endl;
return ;
}
然后改成了动态规划,手画个表就明白了,这是不考虑“马”的因素,到每个点的步数:
然后代码:
#include <iostream>
using namespace std; int maze[][];
long long dp[][];
int dis[][] = { {-,-},{-,},{,},{,-},{,-},{,},{-,-},{-,} };
int M, N, x, y; int main() {
cin >> N >> M >> x >> y;
N++; M++; x++; y++;//起点用(1,1)做,后面不会出现下标越界情况,所有点都+1
maze[x][y] = ;
for (int i = ; i < ; i++) {
//标记马的位置,全局数组多开了几个,可以不做越界判断
maze[x + dis[i][]][y + dis[i][]] = ;
}
dp[][] = ;//使得在循环内能够正常初始化 起点 (1,1)
for (int i = ; i <= N; i++) {
for (int j = ; j <= M; j++) {
if (maze[i][j])continue;
dp[i][j] = dp[i - ][j] + dp[i][j - ];
}
}
cout << dp[N][M] << endl;
return ;
}
随手练——洛谷-P1002 过河卒(动态规划入门)的更多相关文章
- 洛谷 P1002过河卒
洛谷 P1002过河卒 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点 ...
- 洛谷P1002 过河卒 [2017年4月计划 动态规划15]
P1002 过河卒 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之 ...
- 洛谷P1002 过河卒 题解 动态规划
题目链接:https://www.luogu.com.cn/problem/P1002 题目大意 棋盘上\(A\)点有一个过河卒,需要走到目标\(B\)点.卒行走的规则:可以向下.或者向右.同时在棋盘 ...
- 洛谷P1002 过河卒(动态规划)
题目描述 棋盘上 AA 点有一个过河卒,需要走到目标 BB 点.卒行走的规则:可以向下.或者向右.同时在棋盘上 CC 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为 ...
- 洛谷P1002——过河卒
又是洛谷题,要不是有小姐姐不会,我才不想动脑子.先贴一下题目地址https://www.luogu.org/problem/P1002 再贴一下题目: 我们读一下题目,这可不比学校的**算法题,读完一 ...
- 洛谷 P1002 过河卒 【棋盘dp】
题目链接:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...
- 洛谷[P1002]过河卒
原题地址:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...
- 洛谷P1002 过河卒
关于蒟蒻的我,刚刚接触DP.... 那么就来做一道简单DP吧.... 首先先看题: 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一 ...
- 洛谷P1002 过河卒【dp】
棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为"马拦过河卒 ...
随机推荐
- del
Before writing it I spent a fair amount of time on reviewing our chat-log. How silly. asljdfajsodfss ...
- 编写更好的jQuery代码(转)
这是一篇关于jQuery的文章,写到这里给初学者一些建议. 原文地址:http://flippinawesome.org/2013/11/25/writing-better-jquery-code/ ...
- 【echats】echats悬浮事件频繁触发、过于灵敏、快速抖动等异常现象,适用与tooltip有关
方案:transitionDuration设为0: 如图,发现关闭tooltip后现象消失,猜测与tooltip有关. 经过仔细观察,鼠标在快速移动时tooltip会延迟移动,就是这个时间差,让鼠标悬 ...
- BZOJ5372: PKUSC2018神仙的游戏
传送门 Sol 自己还是太 \(naive\) 了,上来就构造多项式和通配符直接匹配,然后遇到 \(border\) 相交的时候就 \(gg\) 了 神仙的游戏蒟蒻还是玩不来 一个小小的性质: 存在长 ...
- Python之面向对象继承复习
总结:self是谁就从谁开始寻找
- css3怎么分清伪类和伪元素
伪类用于向某些选择器添加特殊的效果. 伪元素用于将特殊的效果添加到某些选择器. 伪类有::first-child ,:link:,vistited,:hover,:active,:focus,:lan ...
- 微服务架构之spring cloud turbine
在前面介绍了spring cloud hystrix及其hystrix dashboard,但都是对单个项目的监控,对于一个为项目而言,必定有很多微服务,一个一个去看非常的不方便,如果有一个能集中熔断 ...
- Flex 加载dwg
之前写的几种格式不是专门gis格式,这次来说说加载dwg.首先dwg格式不同于dxf格式,虽然autocad都能加载进去,真正用的比较多的是dwg格式,反正测绘,国土规划部门都是,吐槽下,然而auto ...
- VBScript开发Excel常见问题
VBS基础 基本概念:VB & VBS & VBA VB.VBScript和VBA(Visual Basic For Application)这三种语言,既有联系又有区别.三种语言的语 ...
- 弧形菜单2(动画渐入)Kotlin开发(附带java源码)
弧形菜单2(动画渐入+Kotlin开发) 前言:基于AndroidStudio的采用Kotlin语言开发的动画渐入的弧形菜单...... 效果: 开发环境:AndroidStudio2.2.1+gra ...