题目-过河卒

2024-01-17 01:08
文章标签 题目 过河

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

题目描述

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

棋盘用坐标表示,A点(0, 0)、B点(n, m)(n, m为不超过20的整数),同样马的位置坐标是需要给出的。

现在要求你计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。

输入输出格式

输入格式:

一行四个数据,分别表示B点坐标和马的坐标。

输出格式:

一个数据,表示所有的路径条数。

输入输出样例

输入样例#1:

6 6 3 3

输出样例#1:

6

说明

结果可能很大!

题目分析

1,马走日,即“日”字对角线的一个点。不熟悉的百度下图示,好理解。

2,要求路线的数目,根据卒的走法,只有向右或向上(即向下,看怎样画图)两种走法,即一个点的上面或右面不是马或马的控点,即为一条路线,若两个方向都可走,路径加一,若两个方向都为马的控点,则路径减一。

解题思路

1,要求路线的数目,根据卒的走法,只有向右或向上(即向下,看怎样画图)两种走法,即一个点的上面或右面不是马或马的控点,即为一条路线,若两个方向都可走,路径加一,若两个方向都为马的控点,则路径减一。(思路对,但很难实现)

2,将思路1换个方式表达,另设一个与棋盘相同的数组,每点对应位置存放从(0,0)点到达该点的路径数目,

实际解题

Bug.1:按照思路1写,写不出来。。因为如果按分支写的话,则找不到“该点”的表示方法,按行列逐个枚举肯定不行,递归吗?终止条件若设为末尾点,则经过马的控点的都走不到末尾点,,越想越乱,放弃。换思路2。

Bug.2:马的控点少设一个,它本身,死活不对,最后将棋盘输出,发现错误。

Ac.1:

 代码:

#include<bits/stdc++.h>
using namespacestd;
long longa[25][25],b[25][25];
void horse(intx,int y)
{a[x][y]=1;a[x-2][y-1]=1;a[x-2][y+1]=1;a[x-1][y-2]=1;a[x-1][y+2]=1;a[x+1][y-2]=1;a[x+1][y+2]=1;a[x+2][y-1]=1;a[x+2][y+1]=1;
}int main()
{int bx,by,mx,my;cin>>bx>>by>>mx>>my;horse(mx+1,my+1);//马走日,防止数组越界,下标为负数
//for(inti=1;i<=bx+1;i++)
//{
//    for(int j=1;j<=by+1;j++)
//        cout<<a[i][j]<<"  ";
//    cout<<endl;
//}b[1][1]=1;for(int i=1;i<=bx+1;i++)for(int j=1;j<=by+1;j++){if((a[i][j]!=1)&&(b[i][j]==0)){b[i][j]=b[i-1][j]+b[i][j-1];//卒的两种走法}}
//cout<<endl;
//for(inti=1;i<=bx+1;i++)
//{
//    for(int j=1;j<=by+1;j++)
//    {
//        cout<<b[i][j]<<"  ";
//    }
//    cout<<endl
//}cout<<b[bx+1][by+1];return 0;
}

Ps:

1,存放路径的数组要用 long long 型,真的可能很大。

2,如果以数组表示马控卒走图,考虑马的控点的越界问题。

3,路径从(0,0)点开始时要设为1,不然路径永远是0。



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



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

相关文章

题目1254:N皇后问题

题目1254:N皇后问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: N皇后问题,即在N*N的方格棋盘内放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在同一斜线上。因为皇后可以直走,横走和斜走如下图)。 你的任务是,对于给定的N,求出有多少种合法的放置方法。输出N皇后问题所有不同的摆放情况个数。 输入

题目1380:lucky number

题目1380:lucky number 时间限制:3 秒 内存限制:3 兆 特殊判题:否 提交:2839 解决:300 题目描述: 每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

码蹄集部分题目(2024OJ赛9.4-9.8;线段树+树状数组)

1🐋🐋配对最小值(王者;树状数组) 时间限制:1秒 占用内存:64M 🐟题目思路 MT3065 配对最小值_哔哩哔哩_bilibili 🐟代码 #include<bits/stdc++.h> using namespace std;const int N=1e5+7;int a[N],b[N],c[N],n,q;struct QUERY{int l,r,id;}que

2024 年高教社杯全国大学生数学建模竞赛题目——2024 年高教社杯全国大学生数学建模竞赛题目的求解

2024 年高教社杯全国大学生数学建模竞赛题目 (请先阅读“ 全国大学生数学建模竞赛论文格式规范 ”) 2024 年高教社杯全国大学生数学建模竞赛题目 随着城市化进程的加快、机动车的快速普及, 以及人们活动范围的不断扩大,城市道 路交通拥堵问题日渐严重,即使在一些非中心城市,道路交通拥堵问题也成为影响地方经 济发展和百姓幸福感的一个“痛点”,是相关部门的棘手难题之一。 考虑一个拥有知名景区

力扣 739. 每日温度【经典单调栈题目】

1. 题目 理解题意: 1.1. 给一个温度集合, 要返回一个对应长度的结果集合, 这个结果集合里面的元素 i 是 当前 i 位置的元素的下一个更高温度的元素的位置和当前 i 位置的距离之差, 若是当前元素不存在下一个更高温度的元素, 则这个位置用0代替; 2. 思路 本题用单调栈来求解;单调栈就适用于来求当前元素左边或者右边第一个比当前元素大或者小的元素;【单调栈:让栈中的元素保持单调

msyql执行效率的问题以及常见基础面试题目

SQL被称为结构化查询语言(Structured Query Language )是操作和检索关系型数据库的标准语言 SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。 ※ 数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。    Data Definition Language ※ 数据

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

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

2024 年高教社杯全国大学生数学建模竞赛题目【A/B/C/D/E题】完整论文+代码+结果

编辑 2024国赛A题参考论文https://download.csdn.net/download/qq_52590045/897183672024国赛D题参考论文https://download.csdn.net/download/qq_52590045/897158482024国赛E题参考论文https://download.c

2024 年高教社杯全国大学生数学建模竞赛题目【A/B/C/D/E题】完整论文+代码结果

2024国赛C题参考论文https://download.csdn.net/download/qq_52590045/89718370网盘链接形式,在里更新 2024国赛A题参考论文https://download.csdn.net/download/qq_52590045/89718367      网盘链接形式,在里更新