题目描述
Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉。假设给定单词if,你必须先吃掉i然后才能吃掉f。
但现在你的任务可没有这么简单,你现在处于一个迷宫Maze(n×m的矩阵)当中,里面到处都是以字母标注的食物,但你只能吃掉能连成给定单词W的食物。
注意区分英文字母大小写,并且你只能上下左右行走。
输入
输入第一行包含两个整数n、m(0<n,m<21)分别表示n行m列的矩阵,第二行是长度不超过100的单词W,从第3行到第n+2行是只包含大小写英文字母的长度为m的字符串。
输出
如果能在地图中连成给定的单词,则输出“YES”,否则输出“NO”。注意:每个字母只能用一次。
C语言代码
#include <stdio.h>
#include <string.h>
/*也可不建立全局变量,将相关数组用指针的方式传递到函数中进行操作*/
int n, m;
char str[100];
char array[21][21];
int visit[21][21] = {0}; //记录已找过的字母位置
int DFS(int i, int j, int k, int length)
{
/*判断是否到达单词尾部,若到达表示已找到*/
if (k == length)
{
return 1;
}
/*判断是否到达边界*/
if ((i >= n) || (j >= m) || (i < 0) || (j < 0))
{