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

资源网站免费的seo初级入门教程

资源网站免费的,seo初级入门教程,做网站开发的公司哪家好,网站建设 风险说明目录 ​编辑 一,黄金矿工 1.题意 2.题目分析 3.题目接口 4.解题思路及代码 二,不同路径III 1.题意 2.解释 3.题目接口 4.解题思路及代码 一,黄金矿工 1.题意 你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源…

目录

​编辑

一,黄金矿工

1.题意

2.题目分析

3.题目接口

4.解题思路及代码

二,不同路径III

1.题意

2.解释

3.题目接口

 4.解题思路及代码


 

一,黄金矿工

1.题意

你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是 0

为了使收益最大化,矿工需要按以下规则来开采黄金:

  • 每当矿工进入一个单元,就会收集该单元格中的所有黄金。
  • 矿工每次可以从当前位置向上下左右四个方向走。
  • 每个单元格只能被开采(进入)一次。
  • 不得开采(进入)黄金数目为 0 的单元格。
  • 矿工可以从网格中 任意一个 有黄金的单元格出发或者是停止。

2.题目分析

这道题要我们做的便是找到一条路径,在这条路径上我们能够收集到的黄金的数量是最多的。在这道题里面还有一个前提便是当遇到数字为0的空格时便不能走这一条路径了。

3.题目接口

class Solution {
public:int getMaximumGold(vector<vector<int>>& 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(vector<vector<int>>& grid) {m = grid.size(),n = grid[0].size();for(int i = 0;i<m;i++){for(int j = 0;j<n;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(vector<vector<int>>&grid,int i,int j){sum = max(sum,path);//找到sum与path中的较大值for(int k = 0;k<4;k++){int x = i+dx[k],y = j+dy[k];if(x>=0&&x<m&&y>=0&&y<n&&grid[x][y]!=0){path+=grid[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(vector<vector<int>>& grid) {m = grid.size(),n = grid[0].size();for(int i = 0;i<m;i++){for(int j = 0;j<n;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(vector<vector<int>>&grid,int i,int j,int path){sum = max(sum,path);for(int k = 0;k<4;k++){int x = i+dx[k],y = j+dy[k];if(x>=0&&x<m&&y>=0&&y<n&&grid[x][y]!=0&&!used[x][y]){used[x][y] = true;dfs(grid,x,y,path+grid[x][y]);used[x][y] = false;}}}
};

二,不同路径III

1.题意

在二维网格 grid 上,有 4 种类型的方格:

  • 1 表示起始方格。且只有一个起始方格。
  • 2 表示结束方格,且只有一个结束方格。
  • 0 表示我们可以走过的空方格。
  • -1 表示我们无法跨越的障碍。

返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方格的不同路径的数目

每一个无障碍方格都要通过一次,但是一条路径中不能重复通过同一个方格

2.解释

这道题要我们做的便是在将数值为0的空格遍历完了以后到达数值为2的空格的路径有几条。还是深度优先搜索的问题。在这道题里数值为-1的格子是一个障碍物,不能去遍历。并且,每个空格只能遍历一次。

3.题目接口

class Solution {
public:int uniquePathsIII(vector<vector<int>>& 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(vector<vector<int>>& grid) {m = grid.size();n = grid[0].size();int beginx,beginy;for(int i = 0;i<m;i++){for(int j = 0;j<n;j++){if(grid[i][j]==0){step++;//找到0的个数}if(grid[i][j] == 1)//记录入口的下标{beginx = i;beginy = j;}}}step+=1;//算上2这一步used[beginx][beginy] = true;dfs(grid,beginx,beginy);return count;}void dfs(vector<vector<int>>&grid,int i,int j){if(num == step){if(grid[i][j] == 2){count++;}return;}for(int k = 0;k<4;k++){int x = i+dx[k],y = j+dy[k];if(x>=0&&x<m&&y>=0&&y<n&&grid[x][y]!=-1&&!used[x][y]){num++;used[x][y] = true;dfs(grid,x,y);num--;used[x][y] = false;}}}
};

样子还是和之前的题目的的解题代码相像但是在这里就要一个主动的递归出口了,也就是当所有的0都被遍历完了以后到了2这一步就得到了一个结果了。

http://www.hrbkazy.com/news/28656.html

相关文章:

  • seo的描述正确西安seo关键词排名优化
  • 做python项目的网站互联网产品运营
  • 厦门网站建设要多少钱友情链接在线观看
  • 做网站css代码北京十大教育培训机构排名
  • 企业网站建设规划ppt成都网站建设技术外包
  • 苏州吴中长桥网站建设seo怎么优化方案
  • 如何做旅游小视频网站网络营销总监岗位职责
  • 沈阳做网站优化的公司上海网站建设
  • 请问有没有做网站小网站怎么搜关键词
  • 网站开发费用网络营销推广工具有哪些
  • 杭州企业如何建网站友情链接检索数据分析
  • 网站收录查询方法北京seo网站设计
  • 网站首页制作教程关键字搜索
  • 大连疫情防控最新消息网络培训seo
  • 佛山网站建设的首选公司热门搜索关键词
  • 网站semseo先做哪个网站建设黄页免费观看
  • 天津市住房和城乡建设厅官方网站网站链接提交收录
  • 做阿里巴巴的网站的费用网站seo工具
  • 网站建设实训不足seo快速排名软件app
  • 专业的企业网站开发公司公司建设网站哪家好
  • 杭州做网站的优质公司哪家好排名seo公司
  • 哪个网站做农产品常见的网络推广方式
  • 安陆网站建设推广合肥网络营销公司
  • 福州网站建设培训推广技巧
  • flash 网站源码电脑学校培训
  • 协作网站是什么百度推广后台登录
  • 电子商务平台的法律责任优化课程体系
  • 可以自己做网站服务器不百度提交入口网址
  • 深圳西乡做网站seo优化顾问
  • 上海龙华医院的网站建设线上推广方式都有哪些