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

洛谷 P1644 跳马问题 C语言

题目:

P1644 跳马问题 - 洛谷 | 计算机科学教育新生态

题目背景

在爱与愁的故事第一弹第三章出来前先练练四道基本的回溯/搜索题吧……

题目描述

中国象棋半张棋盘如图 1 所示。马自左下角 (0,0) 向右上角 (m,n) 跳。规定只能往右跳,不准往左跳。比如图 1 中所示为一种跳行路线,并将路径总数打印出来。

输入格式

只有一行:两个数 n,m。

输出格式

只有一个数:总方案数 total。

输入输出样例

输入 #1复制

4 8

输出 #1复制

37

说明/提示

对于 100% 的数据:n,m≤18

思路:

题目求的是从(0,0)到(m,n)的所有方案和,所以我们使用方向数组模拟马右跳,用计数器计数,处理好边界即可。

代码如下:

#include<iostream>
using namespace std;
typedef long long ll;
int cnt = 0;
int dx[] = {1,2,2,1};//长 
int dy[] = {2,1,-1,-2};//宽 
int n,m;
void dfs(int x,int y)
{
	if(x == m && y == n)
	{
		cnt++;
		return;
	}
	for(int i = 0 ; i < 4 ; i++)
	{
		int tx = x + dx[i];
		int ty = y + dy[i];
		if(tx >= 0 && tx <= m && ty >= 0 && ty <= n)
		dfs(tx,ty);
	}
}
int main()
{
	ios :: sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0); 

	cin >> n >> m;
	dfs(0,0);
	cout << cnt << '\n';
	return 0;
	
}


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

相关文章:

  • mapStateToProps
  • 使用 AI 辅助开发一个开源 IP 信息查询工具:一
  • RAG开发中,如何用Milvus 2.5 BM25算法实现混合搜索
  • 【序】前端监控:打造高效稳定的用户体验
  • 嵌入式C语言,函数指针参数的用法详解!!!
  • 【NLP 18、新词发现和TF·IDF】
  • (耗时4天制作)详细介绍macOS系统 本博文含有全英版 (全文翻译稿)
  • 【NLP 16、实践 ③ 找出特定字符在字符串中的位置】
  • 2024.12 迈向可解释和可解释的多模态大型语言模型:一项综合调查
  • JDK13主要特性
  • Mysql复习(一)
  • 【唐叔学算法】第18天:解密选择排序的双重魅力-直接选择排序与堆排序的Java实现及性能剖析
  • 前端知识补充—CSS
  • FFmpeg库之ffmpeg
  • sentinel来源访问控制(黑白名单)
  • 重拾设计模式-外观模式和适配器模式的异同
  • 九江网站建设SEO与优化推广的完美结合
  • 【机器学习】机器学习的基本分类-强化学习-Deep Q-Network (DQN)
  • Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略
  • 10.1k高星 GitHub 库:告别JSON错误:Outlines如何提升大模型的结构化输出
  • PHP阶段一
  • 分布式专题(8)之MongoDB存储原理多文档事务详解
  • Pycharm访问MongoDB数据库
  • 如何解决MQ消息积压问题?
  • 牛客网 SQL36查找后排序
  • 基于 Qt C++ 的滚动屏实现