79. Word Search

题意:

在一个二维数组中是否可以匹配到一个字符串,这个字符串在二维数组中可以拐弯,但必须连续。

思路:深搜+回溯

遍历数组,若数组中元素等于字符串第一个字符进入深搜。
深搜中有一个参数k,表示已经匹配的字符数,若k==word.size(),则表示字符串完全匹配成功。
有一个二维数组参数flag,flag[i][j]表示i j位置是否已经被划入匹配范围,若flag[i][j]=0,则表示已匹配,后面不能再使用这个字符。
在每次dfs开始时需将对应位置置0,然后在结束时需要将对应位置置1.

bool dfs(vector<vector<char>>& board, string &word, vector<vector<bool>> &flag, int i, int j, int k) {//91%
	//cout << k << " " << i << " " << j << endl;
	if (k == word.size())
		return true;
	flag[i][j] = 0;
	if (i > 0 && flag[i - 1][j] && board[i - 1][j] == word[k] && dfs(board, word, flag, i - 1, j, k + 1))
		return true;
	if (j > 0 && flag[i][j - 1] && board[i][j - 1] == word[k] && dfs(board, word, flag, i, j - 1, k + 1))
		return true;
	if (i < board.size() - 1 && flag[i + 1][j] && board[i + 1][j] == word[k] && dfs(board, word, flag, i + 1, j, k + 1))
		return true;
	if (j < board[0].size() - 1 && flag[i][j + 1] && board[i][j + 1] == word[k] && dfs(board, word, flag, i, j + 1, k + 1))
		return true;
	flag[i][j] = 1;
	return false;
}

bool exist(vector<vector<char>>& board, string word) {
	int m = board.size(), n = board[0].size(), sz = word.size();
	vector<vector<bool>> flag(m, vector<bool>(n, 1));
	for (int i = 0; i < m; ++i)
		for (int j = 0; j < n; ++j)
			if (board[i][j] == word[0] && dfs(board, word,flag, i, j, 1))
				return true;
	return false;
}
全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
443459次浏览 4523人参与
# 春招别灰心,我们一人来一句鼓励 #
42266次浏览 539人参与
# 北方华创开奖 #
107476次浏览 600人参与
# 地方国企笔面经互助 #
7975次浏览 18人参与
# 同bg的你秋招战况如何? #
77249次浏览 569人参与
# 实习必须要去大厂吗? #
55816次浏览 961人参与
# 阿里云管培生offer #
120469次浏览 2220人参与
# 虾皮求职进展汇总 #
116395次浏览 887人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11702次浏览 289人参与
# 实习,投递多份简历没人回复怎么办 #
2455021次浏览 34861人参与
# 提前批简历挂麻了怎么办 #
149962次浏览 1979人参与
# 在找工作求抱抱 #
906124次浏览 9423人参与
# 如果公司给你放一天假,你会怎么度过? #
4764次浏览 55人参与
# 你投递的公司有几家约面了? #
33209次浏览 188人参与
# 投递实习岗位前的准备 #
1196058次浏览 18550人参与
# 机械人春招想让哪家公司来捞你? #
157650次浏览 2267人参与
# 双非本科求职如何逆袭 #
662406次浏览 7397人参与
# 发工资后,你做的第一件事是什么 #
12808次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35929次浏览 384人参与
# 简历中的项目经历要怎么写? #
86943次浏览 1516人参与
# 参加完秋招的机械人,还参加春招吗? #
20154次浏览 240人参与
# 我的上岸简历长这样 #
452080次浏览 8089人参与
牛客网
牛客企业服务