给定一个 m×n 二维字符网格 mat 和一个字符串单词 word。判断 word 是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。如果 word 存在于网格中,输出 1;否则,输出 0。
Input:
ABCCED
3 4
A B C E
S F C S
A D E E
Output:
1

#include<bits/stdc++.h>
using namespace std;
char mp[105][105];int n,m,len;string ioi;
int dx[4]={-1,0,1,0};int dy[4]={0,1,0,-1};
bool vis[105][105];bool inrange(int x,int y)
{
return x>0 and x<=n and y>0 and y<=m;
}
string delta("");
void dfs(int x,int y,int cnt)
{
if(inrange(x,y)==false)return;
if(cnt==len)if(ioi==delta)
{cout<<1;exit(0);}
for(int i=0;i<4;++i)
{
int xx=x+dx[i];
int yy=y+dy[i];
if(inrange(xx,yy) and vis[xx][yy]==false)
{
delta.push_back(vis[xx][yy]);vis[xx][yy]=true;
dfs(xx,yy,cnt+1);vis[xx][yy]=false;
delta.erase(delta.end()-1);
}
}
}
int main()
{
cin>>ioi>>n>>m;len=ioi.length();
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
cin>>mp[i][j];
dfs(1,1,0);cout<<0;
}
闰土,一个都不对,求助!