1224 - 过河卒

2024-06-12 14:44
文章标签 过河 1224

本文主要是介绍1224 - 过河卒,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

AA 点有一个过河卒,需要走到目标 BB 点。

卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如下图的 CC 点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。

例如:下图 CC 点可以控制 99 个点(图中的 P1,P2 \dots P8P1,P2…P8 和 CC ),卒不能通过对方马的控制点。 棋盘用坐标表示,现给定 AA 点位置为 (0,0)(0,0), BB 点位置为 (n,m)(n,m) (n,mn,m 为不超过 1010 的整数),马的位置 CC 为 (X,Y)(X,Y)(约定: CC 点与 AA 点不重叠,与 BB 点也不重叠)。

要求你计算出卒从 AA 点能够到达 BB 点的路径的条数。

输入

BB 点的坐标 (n,m)(n,m) 以及对方马的坐标 (X,Y)(X,Y);(马的坐标一定在棋盘范围内,但要注意,可能落在边界的轴上)

输出

输出卒从 AA 点能够到达 BB 点的路径条数。

样例

输入

6 6 3 2

输出

17

来源

递推

#include<bits/stdc++.h>
using namespace std;
int a[25][25];
int main(){int n,m,x,y;cin>>n>>m>>x>>y;for(int i=0;i<=n;i++)for(int j = 0;j<=m;j++)a[i][j] = -1;int dx[10]={0,-1,-1,-2,-2,1,1,2,2};int dy[10]={0,-2,2,-1,1,-2,2,-1,1};for(int i=0;i<=9;i++){int ix=dx[i]+x,iy=dy[i]+y;if(ix>=0&&ix<=n&&iy>=0&&iy<=m)a[ix][iy] = 0;}a[0][0]=1;for(int i=0;i<=n;i++){for(int j=0;j<=m;j++){if(i==0&&a[i][j]==-1)a[i][j]=a[i][j-1];else if(j==0&&a[i][j]==-1)a[i][j]=a[i-1][j];else if(a[i][j]==-1)a[i][j]=a[i][j-1]+a[i-1][j];}}cout<<a[n][m];return 0;
}

这篇关于1224 - 过河卒的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054510

相关文章

笔试强训,[NOIP2002普及组]过河卒牛客.游游的水果大礼包牛客.买卖股票的最好时机(二)二叉树非递归前序遍历

目录 [NOIP2002普及组]过河卒 牛客.游游的水果大礼包 牛客.买卖股票的最好时机(二) 二叉树非递归前序遍历 [NOIP2002普及组]过河卒 题里面给的提示很有用,那个马的关系,后面就注意,dp需要作为long的类型。 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息publ

A*算法解决传教士—野人过河问题

A*算法解决传教士—野人过河问题 算法原理 1、A算法的基本原理分析; 在或图的一般搜索算法中,如果在搜索过程的步骤⑦利用估价函数f(n)=g(n)+h(n)对open表中的节点进行排序,则该搜索算法为A算法。 g(n):从初始节点到n的实际代价 因为n为当前节点,搜索已达到n点,所以g(n)可计算出。 h(n):启发函数,从n到目标节点的最佳路径的估计代价。 因为尚未找到解路径,所以h(n)

过河卒---记忆化搜索

题目描述 Description  如图,A 点有一个过河卒,需要走到目标 B 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 C 点上的马可以控制 9 个点(图中的P1,P2 … P8 和 C)。卒不能通过对方马的控制点。   棋盘用坐标表示,A 点(0,0)、B 点(n,m)(n,

趣味算法------过河卒

目录 ​编辑 题目描述 解题思路 具体代码 总结 问题描述: 解决方案: 代码实现: 关键点: 题目描述 棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示,A 点(0,0)  、B 点(n

hdu 1224 Free DIY Tour(最长路/dp)

http://acm.hdu.edu.cn/showproblem.php?pid=1224 基础的求最长路以及记录路径。感觉dijstra不及spfa好用,wa了两次。 #include <stdio.h>#include <algorithm>#include <set>#include <map>#include <vector>#include <math.h>#

【C++贪心】2498. 青蛙过河 II

本文涉及知识点 贪心 优化后不需要二分 LeetCode2498. 青蛙过河 II 给你一个下标从 0 开始的整数数组 stones ,数组中的元素 严格递增 ,表示一条河中石头的位置。青蛙一开始在第一块石头上,它想到达最后一块石头,然后回到第一块石头。同时每块石头 至多 到达 一次。 一次跳跃的 长度 是青蛙跳跃前和跳跃后所在两块石头之间的距离。 更正式的,如果青蛙从 stones[i]

poj 2573 Bridge(贪心:过河问题)

开始以为排完序每次直接取相邻的就可以了呢 还以为是考察数据结构的题 WA了之后看别人的题解才知道这是一类问题 在这道题目中分析4个人 “a b c d” 过河情况: 把多种情况列出来会发现只有两种情况可能是最优的 第一种:最快的带最慢的 a c a a d a 第二种:最快的带最慢的和次快的带次慢的 a b a c d b 对于n > 3按照上面策略多次处理,每次可以

NYOJ,47,过河问题

过河问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问

2002NOIP普及组真题 4. 过河卒

线上OJ 地址: 【02NOIP普及组】过河卒 核心思想: 对于此类棋盘问题,一般可以考虑 dp动态规划、dfs深搜 和 bfs广搜。 解法一:dp动态规划 方法:从起点开始逐步计算到达每个位置的路径数。对于每个位置,它的路径数 等于 左边和上边位置的路径数之和(如果存在的话),同时要考虑到不能走被禁止的位置。 状态转移方程: d p [ i ] [ j ] = d p [ i −