本题改编自LeetCode原题:79. 单词搜索 - 力扣(LeetCode)
比LeetCode这道题多了一个保存路径,首先,我们可以定义一个长度为4的数组来表示上下左右四个方向,然后我们可以判断分别从每一个位置为起点,是否能够构成一个路径使得和目标字符串相等,我们可以一边走一边存储当前的路径,比如对于C++选手可以维护一个vector<pair<int,int>>
去表示路径,对于Python选手可以维护一个元组去表示路径,这里需要注意,如果回溯的话需要对遍历过的路径进行删除,具体可以参考下方代码和注释,写的很详细。
给一个字符串和一个二维字符数组,如果该字符串存在于该数组中,则按字符串的字符顺序输出字符串每个字符所在单元格的位置下 标字符串,如果找不到返回字符串 N 。
需要按照字符串的字符组成顺序搜索,且搜索到的位置必须是相邻单元格,其中“相邻单元格”是指那些水平相邻或垂直相邻的单元格。 同一个元格内的字不允许被重复使用。 假定在数组中最多只存在一个可能的匹配。
第一行一个整数,表示二维数组所占行数。
第二行到第 N+1 行输入为一个二维大写字符数组。并用","分割
第 N + 2 行为待查找的字符串,由大写字符组成。
二维数组的大小为 N × N, 0 < N ≤ 100。
单词长度为 K, 0 < K < 1000。
如果能找到,输出每个位置的下标,并用","隔开
输入输出示例仅供调试,后台判题数据一般不包含示例
否则,输出"N"
输入
4
A,C,C,F
C,D,E,D
B,E,S,S
F,E,C,A
ACCESS
输出
0,0,0,1,0,2,1,2,2,2,2,3