当前位置: 首页 > article >正文

P1002 [NOIP2002 普及组] 过河卒

P1002 [NOIP2002 普及组] 过河卒 - 洛谷 | 计算机科学教育新生态

题目如下:

棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C'
点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为"马拦过河
卒”。
棋盘用坐标表示,A点(0,0),B点(n,m),同样马的位置坐标是需要给出的。

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

输入格式
一行四个正整数,分别表示B点坐标和马的坐标。

输出格式
一个整数,表示所有的路径条数。

输入输出样例

输入 #1输出 #1
6 6 3 36

说明/提示
对于100%的数据,1 ≤ n, m ≤ 20,0 ≤ 马的坐标 ≤ 20。

题目来源
NOIP 2002 普及组第四题

思路如下:

题目只有向右和向下移动,我们可以很简单的写出状态方程,但是起点是0,0处理很麻烦,所以我们可以同时+1,对边界判断即可。

代码如下:

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
typedef long long ll;
ll dx[] = {-2, -1, 1, 2, 2, 1, -1, -2};
ll dy[] = {1, 2, 2, 1, -1, -2, -2, -1}; 
const ll N = 1e3+10;
ll arr[N];
ll dp[N][N]; //第i,j时的方案数 
bool vis[N][N];
int main() 
{
	ll fx,fy,xm,ym;
	cin >> fx >> fy >> xm >> ym;
	fx += 1;
	fy += 1;
	xm += 1;
	ym += 1;
	for(ll k = 0 ; k < 8 ; k++)
	{
		ll tx = xm + dx[k];
		ll ty = ym + dy[k];
		if (tx >= 1 && tx <= N && ty >= 1 && ty <= N) 
        vis[tx][ty] = true;
	}
	vis[xm][ym] = true;
	dp[1][1] = 1; 
	for(ll i = 1 ; i <= fx ; i++)
	{
		for(ll j = 1 ; j <= fy ; j++)
		{
			if(vis[i][j] == false)
			{
				if(i > 1)
				dp[i][j] += dp[i-1][j];
				if(j > 1)
				dp[i][j] += dp[i][j-1];
			}
		}
	}
	cout << dp[fx][fy];
    return 0;
}


http://www.kler.cn/a/525672.html

相关文章:

  • RocketMQ 中如何实现消息的可靠传递?
  • Linux基础指令
  • CAG技术:提升LLM响应速度与质量
  • 如何看待 OpenAI 的12天“shipmas”发布计划?
  • Qt文件操作
  • WS2812 梳理和颜色表示方法的对比:RGB和HSV
  • Leetcode 131 分割回文串(纯DFS)
  • EtherCAT主站IGH-- 23 -- IGH之fsm_slave.h/c文件解析
  • 在Ubuntu下编译VLC
  • 【AI非常道】二零二五年一月(二),AI非常道
  • 正态分布与柯西分布的线性组合与副本随机变量同分布
  • Spring Boot + Facade Pattern : 通过统一接口简化多模块业务
  • 【C语言】函数递归
  • 【LeetCode: 958. 二叉树的完全性检验 + bfs + 二叉树】
  • 【自学笔记】MySQL的重点知识点-持续更新
  • 《LLM大语言模型+RAG实战+Langchain+ChatGLM-4+Transformer》
  • 【C++动态规划 离散化】1626. 无矛盾的最佳球队|2027
  • 受击反馈HitReact、死亡效果Death Dissolve、Floating伤害值Text(末尾附 客户端RPC )
  • Git 版本控制:基础介绍与常用操作
  • 当代搜索引擎技术介绍性能优化
  • MySQL UNION 操作详解
  • 数据结构初阶之堆的介绍与堆的实现
  • 如何安装 CUDA Toolkits
  • 从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(基础图形库实现)
  • 开源2+1链动模式AI智能名片S2B2C商城小程序:利用用户争强好胜心理促进分享行为的策略研究
  • Codeforces Round 987 (Div. 2)题解 A~D