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

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;}
}

http://www.xdnf.cn/news/1516.html

相关文章:

  • 本地服务器 Odoo 安装指南,并实现公网访问
  • MySQL基础增删改
  • LeetCode-47. 全排列 II
  • 杰理ac792开发板按键不起效果
  • ElasticSearch:高并发场景下如何保证读写一致性?
  • 搭建TypeScript单元测试环境
  • 高性能全闪存储在大模型训练与推理中的效率提升作用
  • HTTP 请求头的 key 不区分大小写。
  • 接口测试和功能测试详解
  • 【AI】Windows环境安装SPAR3D单图三维重建心得
  • 玩转Docker | 使用Docker部署Neko自托管浏览器
  • Chronos - 时间序列预测语言模型
  • SwiftUI 1.Text介绍和使用
  • Elasticsearch 报错 Limit of total fields [1000] has been exceeded
  • SwiftUI 3.Button介绍和使用
  • Python爬虫学习:高校数据爬取与可视化
  • UIAutomator 与 Playwright 在 AI 自动化中的界面修改对比
  • Java学习手册:Web 安全基础
  • MyBatis 升级至 MyBatis-Plus 详细步骤
  • 常用嵌入式软件代码编码规范的关系和覆盖
  • 海康NVR配置NAS-TrueNAS
  • Mysql 简单数据查询
  • 知识储备-后仿
  • AtCoder Beginner Contest 402题解
  • Pillow库中的convert(“L“)彩色图像转换灰度图像详解~
  • 2026《数据结构》考研复习笔记六(串的KMP算法)
  • 【网工第6版】第5章 网络互联⑥
  • 《MySQL:MySQL表的内外连接》
  • 【Redis】redis主从哨兵
  • MySQL常见问题解答