题目 :不同的路径
2015-08-19 18:36
417 查看
有一个机器人的位于一个M×N个网格左上角(下图中标记为'Start')。
机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为'Finish')。
问有多少条不同的路径?
您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题?
Airbnb
Alibaba
Amazon Apple
Baidu Bloomberg
Cisco Dropbox
Ebay Facebook
Google Hulu
Intel Linkedin
Microsoft NetEase
Nvidia Oracle
Pinterest Snapchat
Tencent Twitter
Uber Xiaomi
Yahoo Yelp
Zenefits
感谢您的反馈
样例
以上3 x 7的网格中,有多少条不同的路径?
注意
n和m均不超过100
标签 Expand
动态规划
数组
方法1:AC
public class Solution {
/**
* @param n, m: positive integer (1 <= n ,m <= 100)
* @return an integer
*/
public int uniquePaths(int m, int n) {
// write your code here
int a[][] = new int[m]
;
for(int i=0;i<m;i++){
a[i][0]=1;
}
for(int j=0;j<n;j++){
a[0][j]=1;
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
a[i][j] = a[i-1][j]+a[i][j-1];
}
}
return a[m-1][n-1];
}
}
方法2:时间超限了,用递归实现动态规划。没有AC
public class Solution {
/**
* @param n, m: positive integer (1 <= n ,m <= 100)
* @return an integer
*/
public static int uniquePaths(int m, int n) {
// write your code here
while(1<=m&&1<=n){
if(1==m&&1==n){
return 1;
}
return uniquePaths(m-1,n)+uniquePaths(m, n-1);
}
return 0;
}
}
机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为'Finish')。
问有多少条不同的路径?
您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题?
Airbnb
Alibaba
Amazon Apple
Baidu Bloomberg
Cisco Dropbox
Ebay Facebook
Google Hulu
Intel Linkedin
Microsoft NetEase
Nvidia Oracle
Pinterest Snapchat
Tencent Twitter
Uber Xiaomi
Yahoo Yelp
Zenefits
感谢您的反馈
样例
1,1 | 1,2 | 1,3 | 1,4 | 1,5 | 1,6 | 1,7 |
2,1 | ||||||
3,1 | 3,7 |
注意
n和m均不超过100
标签 Expand
动态规划
数组
方法1:AC
public class Solution {
/**
* @param n, m: positive integer (1 <= n ,m <= 100)
* @return an integer
*/
public int uniquePaths(int m, int n) {
// write your code here
int a[][] = new int[m]
;
for(int i=0;i<m;i++){
a[i][0]=1;
}
for(int j=0;j<n;j++){
a[0][j]=1;
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
a[i][j] = a[i-1][j]+a[i][j-1];
}
}
return a[m-1][n-1];
}
}
方法2:时间超限了,用递归实现动态规划。没有AC
public class Solution {
/**
* @param n, m: positive integer (1 <= n ,m <= 100)
* @return an integer
*/
public static int uniquePaths(int m, int n) {
// write your code here
while(1<=m&&1<=n){
if(1==m&&1==n){
return 1;
}
return uniquePaths(m-1,n)+uniquePaths(m, n-1);
}
return 0;
}
}
相关文章推荐
- iOS6 中 Smart App Banners介绍和使用
- POJ-2192 Zipper-DP-字符串
- windows下使用ndk编译grpc
- rails网页中如何添加模板
- MySQL
- 题目 :x的平方根
- python常用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)
- 活学活用wxPython -> 给你的wxPython程序一个稳固的基础
- nyoj1057 寻找最大数(三)
- 砾阳软件综合报表
- Spring+Quartz实现定时任务的详细配置方法
- 用Maven插件生成Mybatis代码
- 题目 :O(1)检测2的幂次
- poj1734Sightseeing Trip
- Android or iOS 运行 meteor App 屏幕一片空白 White screen的解决方法
- BroadcastReceiver使用方法及个人理解
- 反射
- latex如何输入正确的 双引号
- Hyper-V提供了三种网络模式
- Java 学习笔记(2) -- 数据类型