当前位置: 首页 > news >正文

佛山新网站制作代理商公司起名网站

佛山新网站制作代理商,公司起名网站,diy电子商城网站,网站正在建设中换句话表达矩阵中的路径(回溯)/pair的学习问题分析示例代码pair学习问题 来自力扣: 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按…

矩阵中的路径(回溯)/pair的学习

  • 问题
  • 分析
  • 示例代码
  • pair学习

问题

来自力扣:

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。

在这里插入图片描述

示例 1:
输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
输出:true
示例 2:
输入:board = [["a","b"],["c","d"]], word = "abcd"
输出:false提示:
m == board.length
n = board[i].length
1 <= m, n <= 6
1 <= word.length <= 15
board 和 word 仅由大小写英文字母组成

分析

这题型,很明显,就是回溯。定义一个查找函数,然后,递归调用。最近被一些别的事困扰,没心思自己写,偷懒直接看示例代码了。

示例代码

class Solution {
public:bool check(vector<vector<char>>& board, vector<vector<int>>& visited, int i, int j, string& s, int k) {if (board[i][j] != s[k]) {return false;} else if (k == s.length() - 1) {return true;}visited[i][j] = true;vector<pair<int, int>> directions{{0, 1}, {0, -1}, {1, 0}, {-1, 0}};bool result = false;for (const auto& dir: directions) {int newi = i + dir.first, newj = j + dir.second;if (newi >= 0 && newi < board.size() && newj >= 0 && newj < board[0].size()) {if (!visited[newi][newj]) {bool flag = check(board, visited, newi, newj, s, k + 1);if (flag) {result = true;break;}}}}visited[i][j] = false;return result;}bool exist(vector<vector<char>>& board, string word) {int h = board.size(), w = board[0].size();vector<vector<int>> visited(h, vector<int>(w));for (int i = 0; i < h; i++) {for (int j = 0; j < w; j++) {bool flag = check(board, visited, i, j, word, 0);if (flag) {return true;}}}return false;}
};

官方的解释:
在这里插入图片描述

pair学习

代码中有pair,这让我回想起之前用map的时候,好像用过pair,但并不了解它。
学习内容参考这两篇:C++ pair的基本用法总结(整理)和老卫带你学—C++中map与pair的区别

pair:将2个数据组成一对数据。它是结构体,不是类。即它是同struct定义的。
使用前需要include一个头文件#include<utility>
模板:template<class T1,class T2> struct pair
定义和访问(用公有函数first和sencond访问):

	pair<int, int> a= { 1,5 };pair<int, int> b( 1,5 );pair<int, int>  c = make_pair(1, 5);cout << a.first <<"  "<< a.second << " ";cout << b.first <<"  "<< b.second << " ";cout << c.first <<"  "<< c.second << " ";//结果1  5 1  5 1  5

与map的区别:map是容器,pair可以生成一个一个的pair然后放入容器map中。

同样的,pair定义的变量,可以用其他容器如vector来存放。

http://www.yayakq.cn/news/891650/

相关文章:

  • 公众号网站制作建设工程施工司法解释
  • 同安区建设局网站做抽奖网站合法吗
  • 网站建设怎么让百度搜索到宁波智能模板建站
  • 新乡网站建设waterseo厦门制作网站哪家好
  • 想给孩子找点题做 都有什么网站h5建站工具
  • 手机网站设计只选亿企邦男科医生免费咨询
  • 同类色相的网站铜山区建设局局网站周保春
  • seo综合查询网站域名被墙查询检测
  • 广东人才招聘网宁波seo站外优化推广
  • 个人建网站成本互联网上网络营销的推广
  • 百度云网站开发怎样开网站中国wordpress变装
  • 乐陵seo网站优化怎样制作一个网站步骤
  • 网站建设预期目标自助网站建设系统
  • 有什么网站可以在线做试题中国建筑网官网查询系统
  • 苏省住房和城乡建设厅网站首页事件营销策略
  • 麻章网站开发公司廊坊 网站
  • 找衣服款式的网站wordpress 自动翻译插件
  • 西安网站建设招骋学网站开发培训机构
  • 网站模板外包徐州英才招聘网
  • 杭州市富阳区建设局网站怎么修改网页上的内容
  • 伪静态网站网站 目录写入权限wordpress 4.7.6
  • 易语言网站怎么做网址怎么弄
  • 福田哪家建设网站好中国最新军事新闻500字
  • 织梦网站广告代码如何写开发小程序商城多少钱
  • 北京网站关键词建设网站的虚拟机配置
  • 做微信的网站叫什么软件小程序开发北京华网天下首选
  • 昆明免费网站建设企业不建立网站吗
  • 找钟点工做的网站怎么做家政的网站
  • 顺德哪家做网站小学生摘抄新闻2024
  • 中国建设银行网站客户注册seo网络优化前景怎么样