首页 > 试题广场 >

网格走法数目

[编程题]网格走法数目
  • 热度指数:20022 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个 X*Y 的网格,小团要在此网格上从左上角到右下角,只能走格点(也即格子的顶点)且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数 int x , int y ,请返回小团的走法数目。

数据范围:

输入描述:
输入包括一行,逗号隔开的两个正整数x和y,取值范围[1,10]。


输出描述:
输出包括一行,为走法的数目。
示例1

输入

3 2

输出

10
function math(a,b){
    console.log(f(a+b)/(f(a)*f(b))) 
}
 function f(num){
        if(num <= 1){
            return 1;
        }else{
            return num*f(num - 1);
        }
    }
math(3,2)

发表于 2018-09-04 20:13:02 回复(0)
var a = readline().split(" ");
var x = +a[0];
var y = +a[1];
var arr = [];
for(let i=0; i<=x; i++){
    arr[i] = [];
    for(let j=0; j<=y; j++){
        if(i===0&&j===0){//[0][0]位置是0
            arr[i][j] = 0;
        }else if(i===0||j===0){//横坐标或纵坐标为0的都只有一种可能
            arr[i][j] = 1;
        }else {
            arr[i][j] = 0;
        }

    }
}
for(let i=1; i<=x; i++){
    for(let j=1; j<=y; j++){
        arr[i][j] = arr[i-1][j]+arr[i][j-1];//倒着想每一步都有两种可能,从上面下来的或者是从左边过来的
    }
}
console.log(arr[x][y]);
虽然我觉得我这个有点麻烦了,不过思路比某个要好懂一些~
发表于 2018-07-18 15:08:40 回复(0)
while(line = readline()){
    var lines = line.split(' ');
    var a = parseInt(lines[0]),
        b = parseInt(lines[1]);
	function cellCount(x,y){
        var arr =[];
        //每个格点初始化为1
        for(var i=0; i<=x;i++){
            arr[i]=[];
            for(var j=0; j<=y;j++){
                arr[i][j] = 1;
            }
        }
        //每个格点的值是其左边和上边格点值的和
        for(var i=1;i<=x;i++){
            for(var j=1;j<=y;j++){
                arr[i][j] = arr[i-1][j] + arr[i][j-1];
            }
        }
        return arr[x][y];
    }
    print(cellCount(a,b));
}

发表于 2017-08-08 15:20:02 回复(3)

问题信息

难度:
3条回答 22302浏览

热门推荐

通过挑战的用户

查看代码