求助一道站外题目
  • 板块学术版
  • 楼主BearBig
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/7/20 22:14
  • 上次更新2023/10/27 19:12:28
查看原帖
求助一道站外题目
668599
BearBig楼主2022/7/20 22:14

给定一个 m×nm \times n 二维字符网格 matmat 和一个字符串单词 wordword。判断 wordword 是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。如果 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;
}

闰土,一个都不对,求助!

2022/7/20 22:14
加载中...