洛谷P1102 过河卒
P1102 过河卒
链接在此
过河卒
此题如果直接忽略掉马的影响的话,可以看出很简单的递推规律
即
\]
也就是说,由于卒只能走直线且每次只能向下或向右走一步,那么,要到达第(i,j)点,卒只能从(i-1,j)点以及(i,j-1)这两个点来达到。因此,卒走到第(i,j)点的路径条数即为卒走到第(i-1,j)以及(i,j-1)点的路径条数和,以此类推,因此只需要初始化初值条件就可以推出答案
但是这里我们加上了一个限制条件,也就是马能触及到的地方不能走,当然所在的地方更不能走(容易忘)
所以我们在原先的递推上将这些点标记起来(可以用一些特殊值如-1或者开个bool数组来进行标记),当递推的时候我们直接略过这些点
举个例子
对于点(2,2),\(dp[2][2]=dp[1][2]+dp[2][1]\),但是明显点(1,2)是不可经过的点,因此\(dp[2][1]\)应该恒等于0,因为没有任何一条路径会经过它。所以此时\(dp[2][2]=dp[1][2]\)
AC代码如下
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int offsetx[8] = { +2,+1,-1,-2,-2,-1,+1,+2 };
const int offsety[8] = { +1,+2,+2,+1,-1,-2,-2,-1 };
//马偏移量记录
long long Map[30][30];
//结果记录,不开longlong会爆掉
int main()
{
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
for (int i = 0; i < 8; i++)
{
int x = x2 + offsetx[i];
int y = y2 + offsety[i];
if (x >= 0 && y >= 0 )//保证不出界
Map[x][y] = -1;
//这里采取将所有不可经过点标记为-1
}
if (x2 >= 0 && y2 >= 0)//马所在的那个点也要标记-1
Map[x2][y2] = -1;
for (int i = 0; i <= x1; i++)
if (Map[i][0] != -1)
Map[i][0] = 1;
else
break;
for (int i = 0; i <= y1; i++)
if (Map[0][i] != -1)
Map[0][i] = 1;
else
break;
//以上两步是将dp数组的边界初始化为1(很容易想到边界的值都为1)
//但是要注意一旦遇到不可经过点处于边界上时,此后的Map[i][j]一律为0
//因为对于边界点Map[i][0](Map[0][i])=Map[i-1][0],而如果(i-1,0)这个点为-1,意味着无法经过这个点到达后面的点,因此此时Map[i][0]=0
for (int i = 1; i <= x1; i++)
for (int j = 1; j <= y1; j++)
{
if (Map[i][j] != -1)//跳过不可经过点
{
if (Map[i - 1][j] != -1)//判断是否为-1
Map[i][j] += Map[i - 1][j];
if (Map[i][j - 1] != -1)
Map[i][j] += Map[i][j - 1];
}
}
cout << Map[x1][y1] << endl;
return 0;
}
洛谷P1102 过河卒的更多相关文章
- 洛谷 P1002过河卒
洛谷 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点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为"马拦过河卒 ...
- 洛谷——P1002 过河卒||codevs——T1010 过河卒
https://www.luogu.org/problem/show?pid=1002#sub||http://codevs.cn/problem/1010/ 题目描述 棋盘上A点有一个过河卒,需要走 ...
- 洛谷P1002 过河卒 [2017年4月计划 动态规划15]
P1002 过河卒 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之 ...
- 洛谷P1002 过河卒 题解 动态规划
题目链接:https://www.luogu.com.cn/problem/P1002 题目大意 棋盘上\(A\)点有一个过河卒,需要走到目标\(B\)点.卒行走的规则:可以向下.或者向右.同时在棋盘 ...
- 【做题笔记】洛谷P1002过河卒
虽说是 dp 入门题,但还是有很多细节需要注意 如果设 \(f_{x,y}\) 为目标地点为 \((x,y)\) 时走的种数,那么答案就是 \(f_{n,m}\) 在不考虑那只讨厌的马的情况下,对于任 ...
随机推荐
- 基于函数计算自定义运行时快速部署一个 springboot 项目 什么是函数计算?
什么是函数计算? 函数计算是事件驱动的全托管计算服务.使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码.函数计算为您准备好计算资源,弹性地可靠地运行任务,并提供日志查询.性能监控和报 ...
- C#设计模式06——适配器的写法
什么是适配器模式? 适配器模式是一种结构型设计模式,用于将现有接口转换为符合客户端期望的接口.适配器模式允许不兼容的类可以相互协作. 为什么需要适配器模式? 在实际开发中,经常会遇到需要复用一些已有的 ...
- 打 multi-fidelity RL 旗号,但是幼稚监督学习 + 迁移学习
文章名称:Multi-fidelity reinforcement learning framework for shape optimization 链接:https://www.sciencedi ...
- Jackson 使用 @JsonFormat 注解进行时间格式化
本文为博主原创,未经允许不得转载: 最近帮同事定位了一个现网问题,记录一下: 项目中对所有请求的参数都进行了 Jackson 序列化,在接收请求的实体类字段上使用 @JsonFormat 注解,该注解 ...
- zookeeper 特点、使用场景及安装,配置文件解析
本文为博主原创,未经允许不得转载: 1. Zookeeper 特点: ZooKeeper是用于分布式应用程序的协调服务.它公开了一组简单的API,分布式应用程序可以基于这些API用于同步,节点状态.配 ...
- 比Nginx更好用的Gateway!
比Nginx更好用的Gateway! Token新开源Gateway,使用yarp实现的一个反向代理,支持界面操作动态添加集群添加路由绑定,并且支持动态添加域名绑定https证书,超强yarp+Fre ...
- APB
APB Usage APB主要用于寄存器和外设(GPIO\TIMER\UART)的访问 CPU 通过AXI接口发出transaction访问外设,AXI-based interconnect接收到AX ...
- MySQL高可用搭建方案之(MMM)
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 注意:这篇转载文章,非原创 首发博客地址 原文地址 前言 MySQL的高可用 ...
- [转帖]Linux 学习笔记: shell中${} 的用法,删除&替换
Linux 学习笔记: shell中${} 的用法,删除&替换 字符串的删除 echo${i##*/} 删除 / 前的所有内容 ## 删除 tt=$i echo{tt:22} #取的22位以后 ...
- [转帖]查看堆内对象的工具:jmap
文章目录 用途 命令格式 示例 一,no option 二,heap 三,histo[:live] 四,clstats 五,finalizerinfo 六,dump:<dump-options& ...
