【搜索与回溯算法】字母游戏 详解

小游戏 题目描述 迷宫 深搜 一天早上,你起床的时候想:“我编程序这么牛,为什么不能靠这个赚点小钱呢?”因此你决定编写一个小游戏。 游戏在一个分割成w * h个正方格子的矩形板上进行。如图所示,每个正方格子上可以有一张游戏卡片,当然也可以没有。 当下面的情况满足时,我们认为两个游戏卡片之间有一条路径相连: 路径只包含水平或者竖直的直线段。路径不能穿过别的游戏卡片。但是允许路 阅读详情

 

题目描述

一种单人玩的游戏,规则为:
在一个R行C列的方格上,每个方格中有一个A~Z的字母。游戏从左上角(第一行,第一列)位置开始,一步一步地向相邻(上、下、左、右)方格移动。唯一的限制是路径上的方格中的字母,每种字母只能出现1次。
游戏的目标是走尽可能长的路径。请你写程序算出指定棋盘上,可能走的最长步数。

输入

第1行两个整数R和C(1≤R,C≤20);
后面R行每行有C个字母,每行表示棋盘上的一行状态。

输出

有且只有一行,你计算出的最长步数。

样例输入

5 5
IEFCJ
FHFKC
FFALF
HFGCF
HMCHH

样例输出

10

经典搜索

重点:标记

为甚我阅读那么高但一个赞也没有~

#include <bits/stdc++.h>
using namespace std;

int n, m, walk[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}}, bz[26], sum, ans;
char a[1000][25];

void dfs(int x, int y)
{
	int xx, yy;
	for (int i = 0; i < 4; i++)
		{
			xx = x + walk[i][0];
			yy = y + walk[i][1];
			if (sum > ans)
				ans = sum;
			if (bz[a[xx][yy] - 'A'] == 0 && xx >= 0 && xx < n && yy >= 0 && yy < m)
				{
					bz[a[xx][yy] - 'A'] = 1;
					sum++;
					dfs(xx, yy);
					bz[a[xx][yy] - 'A'] = 0;
					sum--;
				}
		}
}

main()
{
	cin >> n >> m;
	for (int i = 0; i < n; i++)
		{
			scanf("%s", a[i]);
		}
	bz[a[0][0] - 'A'] = 1;
	dfs(0, 0);
	cout << ans + 1;
	return 0;
}
C++搜索与回溯算法之单词接龙 ----------------------*单词接龙*---------------------- Description 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为b 阅读详情

相关推荐

算法学习笔记:25.回溯算法之迷宫寻路——从原理到实战,涵盖 LeetCode 与考研 408 例题

本文系统讲解了回溯算法在迷宫寻路中的应用。通过分析迷宫问题定义和回溯核心思路,文章详细介绍了"尝试-回溯"的递归探索过程,包括标记位置、方向选择和回溯清理等关键步骤。结合LeetCode 490(球滚动迷宫)和79题(单词搜索)的实战案例,展示了不同约束条件下的回溯实现方法,并给出Java代码示例。同时针对考研408考点,解析了概念辨析题和算法设计题,强调访问标记管理的重要性。文章还比较了回溯与BFS、DFS等算法的差异,指出回溯适用于求所有路径而非最短路径。最后总结了迷宫寻路的实际应用

CSBIGDOG的博客 2383

字母游戏(搜索)

问题 S: 【搜索】字母游戏 时间限制: 10 Sec内存限制: 64 MB提交: 28解决: 17[提交] [状态] [讨论版] [命题人:外部导入] 题目描述 一种单人玩的游戏,规则为: 在一个R行C列的方格上,每个方格中有一个A~Z的字母。游戏从左上角(第一行,第一列)位置开始,一步一步地向相邻(上、下、左、右)方格移动。唯一的限制是路径上的方格中的字母,每种字母...

weixin_33881140的博客 456

HTML5-打字游戏

HTML5-打字游戏

c++入门小程序:2.字母游戏

comment。

m0_60534571的博客 391

拼字游戏算法

目录 基本信息 在Scrabble中获得最佳进展的API。 跑 $ git clone https://github.com/radosz99/scrabble-algorithm.git $ docker build -t scrabble_alg . $ docker run -p 5000:5000 scrabble_alg

cs231n作业 assignment 1 q1 q2 q3

请先看课程作业地址。有两种做作业的方法,一种是在google Colab上做 (需魔法),另一种就是下载到本地,但是我懒得在本地配置环境,太麻烦了,还得修改一些基础代码,我就直接在google colab上做了google colab 配置环境只需要跟着教程走就好了最后还有一题解答题懒得做的,这个题目做的没啥意思。让我们用简单写法来实现softmax的loss函数与梯度计算。

Leezed525的博客 9277

【搜索与回溯算法】字母游戏

哈哈

b1233211232321的博客 557

DSP在线升级方案:TMS320C6678使用网络或者串口输出升级数据进行固件升级

下面这段先引用创龙的说明 IBL 运行后, 将从 NOR FLASH 或 NAND FLASH 的 0x00080000 地址引导 ELF/BBLOB 格式 用户程序。 当引导 ELF 格式用户程序时, IBL 会解析用户程序头部信息,并根据头部信息 拷贝不同的代码段至指定 CPU 内存地址,然后将 PC 指针跳转至_c_int00, 再运行用户程 序。当引导 BBLOB 格式用户程序时,由于无头部信息, IBL 会将用户程序拷贝至 0x9E000000 (该内存地址为 IBL 代码指定),并将 PC..

ToneChip的专栏,一个传统的嵌入式码农,裸机编程 1941

leetcode刷题记录(20)-简单

1.寻找比目标字母大的最小字母 题目: 给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母target,请你寻找在这一有序列表里比目标字母大的最小字母。 在比较时,字母是依序循环出现的。举个例子: 如果目标字母 target = 'z' 并且字符列表为letters = ['a', 'b'],则答案返回'a' 思路:直接比较,循环比较其实就是target比letters最大则返回第一个,也可以二分 /** * @param {character[]...

weixin_42733155的博客 302

ROS2_Moveit2_Ur5e_Grasp项目详解(二):核心模块功能解析

本文深入解析了ROS2_Moveit2_Ur5e_Grasp项目的核心模块功能。重点阐述了OctoMap建图模块如何为机械臂提供实时三维环境感知,并详细介绍了Robotiq夹爪与MoveIt2的集成控制、UR5e的运动规划策略,以及视觉模块如何协同工作,最终实现从目标检测到动态抓取的完整闭环。

weixin_29254029的博客 111

保姆级避坑指南:用IWR6843ISK毫米波雷达实现区域检测,从软件安装到可视化调试全流程

本文提供IWR6843ISK毫米波雷达区域检测的全流程实战指南,涵盖环境搭建、固件烧录、可视化工具配置及性能优化等关键步骤。重点解决软件版本兼容性、烧录失败等常见问题,帮助开发者高效实现精准区域检测,避免开发过程中的常见陷阱。

weixin_42653691的博客 375

信息学奥赛一本通之基础算法——第五章 搜索与回溯算法

信息学奥赛一本通之基础算法——第五章 搜索与回溯算法

StephenRay的博客 1802

保姆级教程:在Windows/Linux双系统下搞定Microsemi Libero SoC v11.8安装与白银版License激活

本文提供了一份详细的Microsemi Libero SoC v11.8在Windows/Linux双系统下的安装与白银版License激活指南。涵盖环境准备、安装流程、License跨平台配置及常见问题排查,帮助开发者高效搭建FPGA开发环境。

weixin_30603633的博客 420

回溯算法与深度优先算法

搜索与回溯是计算机竞赛中常用的算法,当很多问题无法通过计算法则来求解时,便可以利用搜索和回溯的技术来求解。 回溯是搜索算法中的一种控制策略,它的基本思想是:为了求得问题的解,先选择一种可能的情况向前探索,如果在探索过程中发现原来的选择是错误的,就退回一步重新选择,如此反复进行,直到穷举出所有情况,可以证明该问题无解。 我相信很多人小时候都玩过“走迷宫”这样一个游戏:进入迷宫后,先随意选择一个可以走的地方前进,如果碰到死路,则说明前方无路可走,这时,如果周围还有没有路可以走,就继续选择一条路前进,否则就往后退

wuyuxiu123的博客 1054

26版SPSS操作教程(高级教程第十章)

#大道之行,在于坚持 #本期内容:二分类Logistic回归模型 #由于导师最近布置了学习SPSS这款软件的任务,因此想来平台和大家一起交流下学习经验,这期推送内容接上一次高级教程第九章的学习笔记,希望能得到一些指正和帮助~

你好! 1599

请举手回答,LDO和DC-DC有什么不同?

文章目录1 LDO是什么2 LDO典型电路3 DC-DC是什么4 DC-DC典型电路5 LDO和DC-DC区别10.2.6 小结一下 大家好,我是记得诚。 DC-DC和LDO都是电源芯片,两者差异很大,用法也不同,这篇博客讲述LDO和DC-DC的一些差异,帮助更好的认识LDO和DC-DC并进行选型。 1 LDO是什么 LDO是low dropout regulator的简称,即低压差线性稳压器,这是相对于传统的线性稳压器来说的,传统的稳压器,输入比输出要高出很多,否则无法工作,LDO可能输入比输出高1~2V

记得诚 1万+

【Java算法精讲】单词搜索与回溯算法

这篇文章介绍了经典的"单词搜索"算法问题,通过回溯算法实现在二维字符网格中查找目标单词。文章首先通过游戏场景引入问题,然后讲解了回溯算法的基本概念及其与DFS的关系,并详细分析了网格问题的特点。针对这一问题的核心思路是从每个单元格出发,递归搜索四个方向的相邻单元格,通过标记访问和回溯来寻找匹配路径。文章还提供了Java实现代码,包括边界条件检查、回溯搜索逻辑和测试用例,帮助读者理解如何高效解决这一常见的算法面试题目。

红目香薰 784

手把手教你学simulink(8.39)--基于Simulink的步进电机(Stepper Motor)仿真实例

通过这个仿真实例,你可以学习如何使用Simulink构建和仿真步进电机(Stepper Motor)系统。你可以根据实际需求调整模型和参数,进行更复杂的仿真和分析。希望这个例子对你有所帮助,祝你学习愉快!

MHD0815的博客 1052

【回溯算法 backtracking】

目录什么是回溯算法???从全排列问题开始理解回溯搜索算法总结回溯算法基础问题列表 什么是回溯算法??? 回溯算法(backtracking)是暴力搜索算法的一种。 这句话向我们揭示了回溯算法的用途:搜索,因此回溯算法也被称为回溯搜索算法。与“二分查找”、“线性查找”等“查找问题”不同的是,“搜索问题”完成一件事情有可能多种方法,而每一种方法又有多个步骤,回溯算法就是在不断尝试,以得到待求问题的...

zj20165149的博客 1625

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

递归 搜索与回溯算法题

先进行画图分析N=2时,为了最下面的盘子解放,我们直接将(一个)盘子移到B上而N=3时,为了最下面的盘子解放,(参考N=2)然后我们将最大(解放)的盘子移到C上,那下一步呢?

有时间要学习的博客 751

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【递归,搜索与回溯算法】专题完结,题单汇总

【递归、搜索与回溯算法】 系统刷题,题单汇总,共 40 道,帮助你算法入门!!!

tan_run的博客 935

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

督促自己——Java算法题四道(某扣)——深度优先搜索、回溯算法

督促自己——Java算法题四道——深度优先搜索、回溯算法 第一题:——回溯算法 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s = “aab” 输出:[[“a”,“a”,“b”],[“aa”,“b”]] 示例 2: 输入:s = “a” 输出:[[“a”]] 基本思路: 针对不同路径,对每条路径分别判断,当本条路径走完,回溯,走另一条路。总而言之,递归就完事了。 例如a a b、aa b

qq_45841205的博客 1974

【递归、搜索与回溯】FloodFill算法(二)

【递归、搜索与回溯算法】FloodFill算法(二):130. 被围绕的区域、417. 太平洋大西洋水流问题、529. 扫雷游戏、LCR 130. 衣橱整理

tan_run的博客 798

回溯算法python

什么是回溯?简单来讲,回溯采用试错的方法解决问题,一旦发现当前步骤失败,回溯方法就返回上一个步骤,选择另一种方案继续试错。 回溯算法针对的大多数问题有以下特点:问题的答案有多个元素(可想象成走迷宫是有多个决定)、答案需要一些约束(比如数独)、寻找答案的方式在每一个步骤相同。回溯算法逐步构建答案,并在确定候选元素不满足约束后立刻放弃候选元素(一旦碰墙就返回),直到找到答案的所有元素。 文章目录一、查...

谢谢ο(=•ω<=)ρ⌒☆ 2853

回溯--字母迷宫

字母迷宫游戏初始界面记作 m x n 二维字符串数组 grid,请判断玩家是否能在 grid 中找到目标单词 target。注意:寻找单词时 必须 按照字母顺序,通过水平或垂直方向相邻的单元格内的字母构成,同时,同一个单元格内的字母 不允许被重复使用。

qq_54481628的博客 1156
上一篇: 【搜索与回溯算法】售货员的烦恼
下一篇: 【高精度练习】加法天才
开朗的坤坤
博客等级 码龄5年 11粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值