题目链接: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 过河卒(动态规划入门)的更多相关文章

  1. 洛谷 P1002过河卒

    洛谷 P1002过河卒 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点 ...

  2. 洛谷P1002 过河卒 [2017年4月计划 动态规划15]

    P1002 过河卒 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之 ...

  3. 洛谷P1002 过河卒 题解 动态规划

    题目链接:https://www.luogu.com.cn/problem/P1002 题目大意 棋盘上\(A\)点有一个过河卒,需要走到目标\(B\)点.卒行走的规则:可以向下.或者向右.同时在棋盘 ...

  4. 洛谷P1002 过河卒(动态规划)

    题目描述 棋盘上 AA 点有一个过河卒,需要走到目标 BB 点.卒行走的规则:可以向下.或者向右.同时在棋盘上 CC 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为 ...

  5. 洛谷P1002——过河卒

    又是洛谷题,要不是有小姐姐不会,我才不想动脑子.先贴一下题目地址https://www.luogu.org/problem/P1002 再贴一下题目: 我们读一下题目,这可不比学校的**算法题,读完一 ...

  6. 洛谷 P1002 过河卒 【棋盘dp】

    题目链接:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...

  7. 洛谷[P1002]过河卒

    原题地址:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...

  8. 洛谷P1002 过河卒

    关于蒟蒻的我,刚刚接触DP....   那么就来做一道简单DP吧.... 首先先看题: 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一 ...

  9. 洛谷P1002 过河卒【dp】

    棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为"马拦过河卒 ...

随机推荐

  1. java加载redis以及基本操作

    前言: Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure server).Redis的键值可以包括字符串(st ...

  2. 【SSH网上商城项目实战02】基本增删查改、Service和Action的抽取以及使用注解替换xml

    转自:https://blog.csdn.net/eson_15/article/details/51297698 上一节我们搭建好了Struts2.Hibernate和Spring的开发环境,并成功 ...

  3. H5 Js图片转base64编码

    <!Doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. 3.springioc bean 的几个属性

    1.lazy-init="false" 默认值为false,指的是bean的创建时机的spring容器一启动就会加载这些类.有点是及时发现bean的相关错误,因为spring容器启 ...

  5. OpenStack IceHouse 部署 - 5 - 网络节点部署

    Neutron网络服务(网络节点)     目录 [隐藏]  1 参考 2 前置工作 2.1 调整内核参数 3 安装 4 配置 4.1 keystone对接 4.2 rabbitmq对接 4.3 me ...

  6. 原生javascript实现类似jquery on方法的行为监听

    原生javascript有addEventListener和attachEvent方法来注册事件,但有时候我们需要判断某一行为甚至某一函数是否被执行了,并且能够获取前一行为的参数,这个时候就需要其他方 ...

  7. 【SPOJ】MGLAR10 - Growing Strings

    Gene and Gina have a particular kind of farm. Instead of growing animals and vegetables, as it is us ...

  8. Tinker + Bugly + Jenkins 爬坑之路

    前阵子 Android 端的线上崩溃比较多,热修复被提上日程.实现方案是 Tinker,Jenkins 打包,最后补丁包上传到 Bugly 进行分发.主要在 Jenkins 打包这一块爬了不少坑,现记 ...

  9. 前端单元测试环境搭建 Karma Jasmine

    Karma 官网On the AngularJS team, we rely on testing and we always seek better tools to make our life e ...

  10. 【转】pscp实现远程文件(夹)传输

    原文地址:http://blog.163.com/yang_jianli/blog/static/16199000620128251383197/ pscp与linux下的scp命令相似,功能相同,在 ...