返回题解分享
讨论 / 题解分享/ 帖子详情

小红与字符串矩阵 - 题解

DFS



#include <iostream>

using namespace std;

const int N = 1010;

char s[] = "tencent";

int n, m;
char d[N][N];
bool st[N][N];
int ans;

int dx[] = { -1, 0, 1, 0 };
int dy[] = { 0, -1, 0, 1 };

void dfs(int x, int y, int u)
{
	if (u == 6)
	{
		ans++;
		return;
	}

	for (int i = 0; i < 4; i++)
	{
		int nx = x + dx[i], ny = y + dy[i];
		if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && d[nx][ny] == s[u + 1])
			dfs(nx, ny, u + 1);
	}
}

void solve()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++)
			cin >> d[i][j];

	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++)
			if (d[i][j] == 't')
				dfs(i, j, 0);
		
	cout << ans << endl;
}

int main()
{
	solve();
	return 0;
}
0 回复 0 转发 2 喜欢 6 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!