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

婚恋网站应聘做销售广州住房和城乡建设厅网站首页

婚恋网站应聘做销售,广州住房和城乡建设厅网站首页,锦州网站开发,开发板原理图目录 ​编辑 一#xff0c;黄金矿工 1.题意 2.题目分析 3.题目接口 4.解题思路及代码 二#xff0c;不同路径III 1.题意 2.解释 3.题目接口 4.解题思路及代码 一#xff0c;黄金矿工 1.题意 你要开发一座金矿#xff0c;地质勘测学家已经探明了这座金矿中的资源… 目录 ​编辑 一黄金矿工 1.题意 2.题目分析 3.题目接口 4.解题思路及代码 二不同路径III 1.题意 2.解释 3.题目接口 4.解题思路及代码 一黄金矿工 1.题意 你要开发一座金矿地质勘测学家已经探明了这座金矿中的资源分布并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量如果该单元格是空的那么就是 0。 为了使收益最大化矿工需要按以下规则来开采黄金 每当矿工进入一个单元就会收集该单元格中的所有黄金。矿工每次可以从当前位置向上下左右四个方向走。每个单元格只能被开采进入一次。不得开采进入黄金数目为 0 的单元格。矿工可以从网格中 任意一个 有黄金的单元格出发或者是停止。 2.题目分析 这道题要我们做的便是找到一条路径在这条路径上我们能够收集到的黄金的数量是最多的。在这道题里面还有一个前提便是当遇到数字为0的空格时便不能走这一条路径了。 3.题目接口 class Solution { public:int getMaximumGold(vectorvectorint grid) {} }; 4.解题思路及代码 先来写个代码 1.第一种写法 class Solution { public:int m,n;int path;//表示每一条路径上的黄金数量int sum;//记录最大和int dx[4] {0,0,1,-1},dy[4] {1,-1,0,0};//坐标法表示坐标的上下左右移动int getMaximumGold(vectorvectorint grid) {m grid.size(),n grid[0].size();for(int i 0;im;i){for(int j 0;jn;j){if(grid[i][j]!0)//当找到不是0的位置时便可以从这个位置开始递归找结果{path grid[i][j];int remark grid[i][j];grid[i][j]0;//该位置被寻找了以后便要将该位置置为0dfs(grid,i,j);grid[i][j] remark;path-remark;}}}return sum;}void dfs(vectorvectorintgrid,int i,int j){sum max(sum,path);//找到sum与path中的较大值for(int k 0;k4;k){int x idx[k],y jdy[k];if(x0xmy0yngrid[x][y]!0){pathgrid[x][y];int temp grid[x][y];grid[x][y] 0;dfs(grid,x,y);path-temp;grid[x][y] temp;}}} }; 其实这道题的解法和我们之前写的矩阵深搜问题的解题代码是差不多的。小小的不同点便是要比较较大值来对sum进行更新。为了避免麻烦我们便用max在每一次进入递归时就比较一下对sum更新一下以此来确保sum是最大值。 2.第二种写法 在上面的写法中我们使用的是全局变量path和修改原来的矩阵的方式来标记查找过的位置在这里我们写一种不同的解法 class Solution { public:int m,n;int sum;bool used[15][15];//用相同大小的used数组来标记使用过的位置。int dx[4] {0,0,1,-1},dy[4] {1,-1,0,0};int getMaximumGold(vectorvectorint grid) {m grid.size(),n grid[0].size();for(int i 0;im;i){for(int j 0;jn;j){if(grid[i][j]!0){used[i][j] true;dfs(grid,i,j,grid[i][j]);used[i][j] false;}}}return sum;}void dfs(vectorvectorintgrid,int i,int j,int path){sum max(sum,path);for(int k 0;k4;k){int x idx[k],y jdy[k];if(x0xmy0yngrid[x][y]!0!used[x][y]){used[x][y] true;dfs(grid,x,y,pathgrid[x][y]);used[x][y] false;}}} }; 二不同路径III 1.题意 在二维网格 grid 上有 4 种类型的方格 1 表示起始方格。且只有一个起始方格。2 表示结束方格且只有一个结束方格。0 表示我们可以走过的空方格。-1 表示我们无法跨越的障碍。 返回在四个方向上、下、左、右上行走时从起始方格到结束方格的不同路径的数目。 每一个无障碍方格都要通过一次但是一条路径中不能重复通过同一个方格。 2.解释 这道题要我们做的便是在将数值为0的空格遍历完了以后到达数值为2的空格的路径有几条。还是深度优先搜索的问题。在这道题里数值为-1的格子是一个障碍物不能去遍历。并且每个空格只能遍历一次。 3.题目接口 class Solution { public:int uniquePathsIII(vectorvectorint grid) {} }; 4.解题思路及代码 先写代码 class Solution { public:int count ;//记录路径的个数int step;//记录要走的步数int num ;//记录当前走了多少步int m,n;bool used[20][20];int dx[4] {0,0,1,-1},dy[4] {1,-1,0,0};int uniquePathsIII(vectorvectorint grid) {m grid.size();n grid[0].size();int beginx,beginy;for(int i 0;im;i){for(int j 0;jn;j){if(grid[i][j]0){step;//找到0的个数}if(grid[i][j] 1)//记录入口的下标{beginx i;beginy j;}}}step1;//算上2这一步used[beginx][beginy] true;dfs(grid,beginx,beginy);return count;}void dfs(vectorvectorintgrid,int i,int j){if(num step){if(grid[i][j] 2){count;}return;}for(int k 0;k4;k){int x idx[k],y jdy[k];if(x0xmy0yngrid[x][y]!-1!used[x][y]){num;used[x][y] true;dfs(grid,x,y);num--;used[x][y] false;}}} }; 样子还是和之前的题目的的解题代码相像但是在这里就要一个主动的递归出口了也就是当所有的0都被遍历完了以后到了2这一步就得到了一个结果了。
http://www.hkea.cn/news/14487964/

相关文章:

  • 哪家网站建设项目自主验收网站
  • 免费网站推荐软件商城站人工售票时间表
  • 深圳网站建设售后服务怎样怎么推广网页
  • 上海建设厅网站首页网站做优化的好处
  • 兖州网站建设推广哪些网站做商标注册
  • dw2018网页制作步骤图文排名网站优化培训
  • 湘潭建设厅官方网站建设厅网站给领导留言如何查看
  • 同城分类信息网站厦门电脑网站建设
  • 中心城网站建设做普通网站公司
  • 珠宝行业做网站的好处怎么建立自己的网站域名
  • 设计企业网站布局考虑的因素生产公司简介模板
  • 秦皇岛制作网站参加sem培训
  • 搭建网站的五大步骤3g门户
  • 白城哪家做网站个人全屏网站模板
  • 做微商的网站宁波seo外包推广
  • 怎么建设门户网站上海奉贤网站建设 列表网
  • 西安城乡住房建设厅网站漫画风格网站
  • 正常网站 月均ip pv中企动力合作网站
  • 苗木网站模板哪个网站做的简历比较好
  • 商洛网站建设公司知名网站建设公司
  • 英文网站建设注意事项linux中wordpress
  • 商标注册申请官网厦门seo公司到1火星
  • 京东网站建设目标是什么意思网站换域名影响
  • 在小网站上做点击广告怎么给网站创建二维码
  • 开源网站建设是什么工作crm系统什么意思
  • 河北网站建设电话网站首页栏目设置
  • 深圳做外贸网站公司哪家好淮北做网站的公司
  • 网站国内空间和国外空间网站 沙盒
  • 怎样在微信做产品网站wordpress搭建app
  • 做网站最快多久凡科建站的建站后如何管理