百度2015 在线笔试题(2)
来源:互联网 发布:初级会计怎么备考 知乎 编辑:程序博客网 时间:2024/05/21 22:30
题目
障碍物问题,类似LeetCode45题Jump Game II
不同的是,此处约定从左下角走至右上角,每一步只能向右、向上或斜上方前进,另外所给矩阵中元素1代表无障碍,元素0代表有障碍;
分析
动态规划,与LeetCode45题Jump Game II采用相同的处理,注意 (i , j)的取值即可!
程序
#include <iostream>#include <cstdlib>#include <vector>using namespace std;//直接用非递归算法求解class Solution {public: int uniquePathsWithObstacles(vector<vector<int> >& obstacleGrid) { if (obstacleGrid.empty()) return 0; int m = obstacleGrid.size(); int n = obstacleGrid[0].size(); vector<vector<int> > ret(m, vector<int>(n, 0)); //矩阵最左列 for (int i = m-1; i >= 0; i--) { //无障碍,则有一条路径,否则不通 if (obstacleGrid[i][0] == 1) ret[i][0] = 1; else break; }//for //矩阵最底行 for (int j = 0; j < n; j++) { //无障碍,则有一条路径,否则不通 if (obstacleGrid[m-1][j] == 1) ret[m-1][j] = 1; else break; }//for //其余位置 for (int i = m-2; i >= 0; i--) { for (int j = 1; j < n; j++) { //当前位置为障碍,则到此处路径数为0 if (obstacleGrid[i][j] == 0) ret[i][j] = 0; else{ ret[i][j] = ret[i+1][j] + ret[i][j-1] + ret[i+1][j-1]; }//else }//for }//for return ret[0][n - 1]; }//uniques};int main(){ Solution s; vector<vector<int> > v = { { 1, 1, 1 }, { 1, 0, 1 }, { 1, 1, 1 } }; //vector<vector<int> > v = { { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 } }; cout << s.uniquePathsWithObstacles(v) << endl; system("pause"); return 0;}
0 0
- 百度2015 在线笔试题(2)
- 百度2015 在线笔试题(1)
- 百度2015 在线笔试题(3)
- 百度在线笔试
- 网易游戏2015 在线笔试题(2)
- 转百度在线笔试题目
- 2016 - 百度 - 实习 -- 在线笔试
- 网易互联网2015 在线笔试(2)
- 京东2015在线笔试 (2)
- 百度笔试题2
- 百度笔试题2
- 百度笔试题2
- 百度php/jsp职位在线笔试真题专家解答
- 2006年百度在线笔试题及答案
- 新浪笔试题 (2011在线笔试)
- 2015百度笔试题(算法)
- 2015百度笔试题(软件)
- 微软在线笔试题2015
- sqlserver查询分析器执行sql语句顺序
- ios8.0下CLLocationManager定位服务需要授权了
- spring2.5 xml以及注解的简单入门示例(ioc)
- Struts 2 Hello World Example
- iOS CLLocationManager定位
- 百度2015 在线笔试题(2)
- Android Studio删除module
- After 500: 写了第500篇博客,然后呢?
- 关于Spring中的<idref/>
- UIPickerView 学习
- tcp/ip 连接三次握手,断开四次握手
- HDU 5430:Reflect 欧拉函数
- 电脑上使环境变量立即生效的方法
- JSP九大内置对象