您的位置:首页 > 其它

格网中A点(左上角)到B点(右下角)路径数量算法

2015-09-20 14:22 323 查看
有一个m*n的格网,一个机器人在格网左上角(A点)要到格网的右下角(B点),机器人只能向下或者向右运行一步,求所有A到B的路径数量。



public int getPath(int m,int n){
int[] dp=new int[m];
for(int i=0;i<m;i++){
dp[i]=1;
}
for(int i=1;i<n;i++){
for(int j=1;j<m;j++){
ap[j]+=dp[j-1];
}
}
return dp[m-1];
}


如果在上述的条件下的m*n的格网中,每个格网值为0或者1,0代表可以通过,1代表不能通过,问A点到B点的路径数量

0 0 0

0 1 0

0 0 0

public int getPath(int[][] grid){
int width=grid[0].length;
int[] dp=new int[width];
dp[0]=1;
for(int[] row:grid){
for(int j=0;j<width;j++){
if(row[j]==1){
dp[j]=0;
}else if(j>0){
dp[j]+=dp[j-1];
}
}
}

return dp[width-1];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法