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

NEUOJ网格路径


在一个 7×7 的网格中,从左上方的方格走到左下方的方格,共有 88418 条路径。每条路径对应一个由字符 D(向下)、U(向上)、L(向左)和 R(向右)组成的 48 字符描述。

例如,路径

请添加图片描述

对应于描述 DRURRRRRDDDLUULDDDLDRRURDDLLLLLURULURRUULDLLDDDD。

现在给你一个路径的描述,其中可能包含字符 ?(表示任意方向)。你的任务是计算与该描述匹配的路径数量。

输入
唯一的输入行包含一个 48 个字符组成的字符串,字符可以是 ?、D、U、L 和 R。

输出
输出一个整数:匹配描述的路径总数。

输入样例

??????R??????U??????????????????????????LD????D?

输出样例

201

输入样例

DRURRRRRDDDLUULDDDLDRRURDDLLLLLURULURRUULDLLDDDD

输出样例

1

解题思路:

1、首先考虑爆搜,但是状态很多,对于?很多的情况一定会超时。
2、对搜索进行剪枝:

  • (1)当前点四周被包围且不是终点时,剪枝。
  • (2)对于一个字形的访问路径,则下一步一定向中间走,具体形式化为:若当前点的上下区域被访问过且左右区域未被访问,或左右区域被访问且上下区域未被访问,则进行剪枝。

这里仅给出搜索过程,仅供参考

void dfs(int u, int v, int depth) 
{if (depth == 48) {if (u == n && v == 1) ans++;return;}if (u == n && v == 1) return;if (check(u, v)) return;char req = s[depth];for (int i = 0; i < 4; i++) {if (req != '?' && req != dir[i]) continue;int x = u + dx[i], y = v + dy[i];if (x < 1 || x > n || y < 1 || y > n || vis[x][y]) continue;vis[x][y] = 1;dfs(x, y, depth + 1);vis[x][y] = 0;}
}

相关文章:

  • 变量在template里不好使,在setup好使?
  • 从并发问题衍生出的Spring的七种事务传播行为
  • 问题:raw.githubusercontent无法访问
  • 《解锁快速记忆法:开启高效学习的大门》
  • 消息中间件RabbitMQ02:账号的注册、点对点推送信息
  • 4.23学习总结
  • 如何设计一个实时数据同步方案
  • 抱佛脚之学SSM六
  • 集成电路过流保护:基于 hiccup 模式的设计与解析
  • MVCWebAPI使用FromBody接受对象的方法
  • Windows上使用Python 3.10结合Appium-实现APP自动化
  • Apache Flink 深度解析:流处理引擎的核心原理与生产实践指南
  • 2025.04.23华为机考第一题-100分
  • 数据库1个
  • Vue3速通笔记
  • QT软件安装(12)
  • VBA批量读取access数据库(.mdb)
  • 淘宝平台关键字搜索接口接入指南(含代码示例及商品标题解析)
  • 机器学习分类算法详解:原理、应用场景与测试用例
  • 海思SDK的sensor驱动框架
  • 神舟二十号载人飞船发射升空
  • 上海天文馆加持,书友可在徐家汇书院“飞越银河系”!
  • 解放军报社论:谱写新时代双拥工作崭新篇章
  • 中方警告韩国公司不要向美军工企业出口含中国稀土矿物产品?外交部回应
  • “中华优秀科普图书榜”2024年度榜单揭晓
  • 门票在“缩水”,古镇怎么办