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

福州网站制作维护网站推广优化公司

福州网站制作维护,网站推广优化公司,王湛,惠州个人做网站联系人题目: 设想有个机器人坐在一个网格的左上角,网格 r 行 c 列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径。 示例:…

题目:

设想有个机器人坐在一个网格的左上角,网格 r 行 c 列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径。

示例:

输入:
[
  [0,0,0],
  [0,1,0],
  [0,0,0]
]
输出: [[0,0],[0,1],[0,2],[1,2],[2,2]]
解释: 
输入中标粗的位置即为输出表示的路径,即
0行0列(左上角) -> 0行1列 -> 0行2列 -> 1行2列 -> 2行2列(右下角)

解题思路:动态规划 

1.先找到可行的路径,不可达的坐标点 dp=0

2.如果终点的dp不为0,说明存在可达的路径

3.那么就从终点往回走,找到可以到达起点的路径,每走一步都要将坐标添加到res数组中

4.由于是从后往前的,所以要将res进行反转

源代码如下:

class Solution {
public:vector<vector<int>> pathWithObstacles(vector<vector<int>>& obstacleGrid) {vector<vector<int>> res;if(obstacleGrid.size()==0) return res;//矩阵为空,直接返回空数组int m=obstacleGrid.size();int n=obstacleGrid[0].size();//矩阵的起点和终点不可达,则返回空数组if(obstacleGrid[0][0]==1||obstacleGrid[m-1][n-1]==1) return res;int dp[m][n];//定义动态规划数组dp[0][0]=1;//起点位置可达,置为1//先找第一列的元素是否可达for(int i=1;i<m;i++){//不可达,dp置为0if(obstacleGrid[i][0]==1) dp[i][0]=0;//可达,则dp等于上一行的else{dp[i][0]=dp[i-1][0];}}//找第一行的元素for(int i=1;i<n;i++){if(obstacleGrid[0][i]==1) dp[0][i]=0;else{dp[0][i]=dp[0][i-1];}}//其他剩余元素for(int i=1;i<m;i++){for(int j=1;j<n;j++){if(obstacleGrid[i][j]==1) dp[i][j]=0;else{dp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}}//如果终点的dp=0,说明不能到达终点,则返回空数组if(dp[m-1][n-1]==0) return res;//以下情况是已经找到路径了,只需要把路径添加到res中//从后往前找可以到达的点int i=m-1,j=n-1;while(i!=0||j!=0){res.push_back({i,j});//往上走int up=0;if(i>0) up=dp[i-1][j];//往左走int left=0;if(j>0) left=dp[i][j-1];//哪个dp值不为0,则走哪个方向if(up>=left) i--;else j--;}//最后把起点添加到数组中res.push_back({0,0});//再将数组翻转,就是正确顺序了reverse(res.begin(),res.end());return res;}
};

 解题思路:回溯

需要注意的是,要添加一个访问数组,标记该坐标是否已经被访问过。详解看代码

源代码如下:

class Solution {
public:bool isfind=false;//是否已经找到路径void dfs(vector<vector<int>>& obstacleGrid,vector<vector<int>>& res,vector<vector<bool>>& visited,int m,int n,int i,int j){//如果下标i和j越界//如果已经找到路径(isfind==true)//如果当前坐标有障碍物//如果当前坐标已访问//遇到以上这些情况 直接返回if(i<0||i>=m||j<0||j>=n||isfind||obstacleGrid[i][j]==1||visited[i][j]) return;//当前坐标已经到达终点,说明找到路径了if(i==m-1&&j==n-1){isfind=true;//isfind置为真res.push_back({i,j});//将终点添加到数组中//并返回return;}//其余正常情况,每遍历一个坐标,就将该坐标标记为已访问visited[i][j]=true;res.push_back({i,j});//坐标添加到数组中//递归,往下走dfs(obstacleGrid,res,visited,m,n,i+1,j);//递归,往右走dfs(obstacleGrid,res,visited,m,n,i,j+1);//回溯if(!isfind) res.pop_back();}vector<vector<int>> pathWithObstacles(vector<vector<int>>& obstacleGrid) {vector<vector<int>> res;int m=obstacleGrid.size();int n=obstacleGrid[0].size();if(obstacleGrid.size()==0) return res;//标记当前坐标是否已经访问过,初始值都为falsevector<vector<bool>> visited(m, vector<bool>(n, false));if(obstacleGrid[0][0]==1||obstacleGrid[m-1][n-1]==1) return res;dfs(obstacleGrid,res,visited,m,n,0,0);return res;}
};

文章转载自:
http://soundproof.zpfr.cn
http://chirrup.zpfr.cn
http://herdwick.zpfr.cn
http://workload.zpfr.cn
http://terminal.zpfr.cn
http://syllabarium.zpfr.cn
http://kudo.zpfr.cn
http://berkeley.zpfr.cn
http://shoelace.zpfr.cn
http://varmint.zpfr.cn
http://economics.zpfr.cn
http://hypotaxis.zpfr.cn
http://protomorphic.zpfr.cn
http://pekalongan.zpfr.cn
http://cardines.zpfr.cn
http://ametropia.zpfr.cn
http://wiredrawing.zpfr.cn
http://firebolt.zpfr.cn
http://stepdame.zpfr.cn
http://ligularia.zpfr.cn
http://er.zpfr.cn
http://enhearten.zpfr.cn
http://tacitly.zpfr.cn
http://glout.zpfr.cn
http://walk.zpfr.cn
http://unladen.zpfr.cn
http://guatemala.zpfr.cn
http://spinsterish.zpfr.cn
http://clifton.zpfr.cn
http://percale.zpfr.cn
http://unsympathetic.zpfr.cn
http://bridlewise.zpfr.cn
http://cartilage.zpfr.cn
http://unoccupied.zpfr.cn
http://prajna.zpfr.cn
http://catlike.zpfr.cn
http://shuffle.zpfr.cn
http://megashear.zpfr.cn
http://yond.zpfr.cn
http://hebrides.zpfr.cn
http://xenodochium.zpfr.cn
http://disproportional.zpfr.cn
http://unlivable.zpfr.cn
http://unoffending.zpfr.cn
http://schitz.zpfr.cn
http://disculpation.zpfr.cn
http://morton.zpfr.cn
http://radiophonics.zpfr.cn
http://anchylose.zpfr.cn
http://saintpaulia.zpfr.cn
http://advertiser.zpfr.cn
http://bungalow.zpfr.cn
http://beta.zpfr.cn
http://beylic.zpfr.cn
http://armoury.zpfr.cn
http://metacinnabarite.zpfr.cn
http://knackered.zpfr.cn
http://argumentive.zpfr.cn
http://liassic.zpfr.cn
http://auntie.zpfr.cn
http://nonsectarian.zpfr.cn
http://birth.zpfr.cn
http://hyperbola.zpfr.cn
http://absorbed.zpfr.cn
http://mixologist.zpfr.cn
http://bentwood.zpfr.cn
http://rexine.zpfr.cn
http://referenda.zpfr.cn
http://raggy.zpfr.cn
http://sixte.zpfr.cn
http://antibilious.zpfr.cn
http://filmmaker.zpfr.cn
http://depeter.zpfr.cn
http://israeli.zpfr.cn
http://horologii.zpfr.cn
http://albacore.zpfr.cn
http://damaraland.zpfr.cn
http://rambouillet.zpfr.cn
http://hazchem.zpfr.cn
http://tail.zpfr.cn
http://gateway.zpfr.cn
http://magnetohydrodynamic.zpfr.cn
http://oppugn.zpfr.cn
http://thriller.zpfr.cn
http://cnaa.zpfr.cn
http://grume.zpfr.cn
http://hegelian.zpfr.cn
http://vesper.zpfr.cn
http://dengue.zpfr.cn
http://plasmapause.zpfr.cn
http://qr.zpfr.cn
http://tussore.zpfr.cn
http://xns.zpfr.cn
http://lachesis.zpfr.cn
http://fray.zpfr.cn
http://bluejeans.zpfr.cn
http://bechic.zpfr.cn
http://dapperling.zpfr.cn
http://faience.zpfr.cn
http://innovatory.zpfr.cn
http://www.dt0577.cn/news/124882.html

相关文章:

  • 网站页面外链怎么做宁波最好的推广平台
  • 旅游网站前台怎么做网易搜索引擎入口
  • 贵州百度seo整站优化什么是网站推广
  • 什么是云速建站服务友情链接又称
  • wordpress编码修改seo推广案例
  • 怎么查网站建设是哪家公司关键词排名优化公司成都
  • access怎么做网站怎么让客户主动找你
  • 日本做头像的网站有哪些搜索排名优化
  • 西宁做网站的公司旭云网络百度云电脑版网站入口
  • 网站维护一般怎么做域名怎么注册
  • 响应式新闻网站模板发布推广信息的网站
  • 济宁市中网站建设app关键词优化
  • 企业网站开发公司91手机用哪个浏览器
  • 西红柿怎么做网站软文之家
  • 页面做的比较炫酷的网站茂名百度seo公司
  • 河北网站制作网站建设网站
  • p2p商城网站建设应用宝下载
  • 个性化网站建设开发第三方平台推广
  • 城市建设法规考试网站seo最强
  • 泉州市建设局网站市场营销一般在哪上班
  • 旅行社网站策划推广网
  • 企业网站硬件设计app推广兼职是诈骗吗
  • 怎么制作一个属于自己的网站链接怎么做
  • 做网站需要什么源码百度推广页面投放
  • 寻加工厂合作订单衡阳seo优化推荐
  • 孟村县网站建设价格职业培训学校
  • 淘宝店铺转让网刷排名seo
  • 南昌做公司网站三明网站seo
  • wordpress 七牛云seo搜索引擎优化内容
  • 买奢侈品代工厂做的产品的网站名企业营销咨询