题解 | #走方格的方案数#

走方格的方案数

https://www.nowcoder.com/practice/e2a22f0305eb4f2f9846e7d644dba09b

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) { 
            int a = in.nextInt();
            int b = in.nextInt();
            System.out.println(cal(0, 0, a, b));
        }
    }

    public static int cal(int m, int n, int a, int b) {
        if (m < a && n < b) {//由题意限制,ab肯定同时大于0,这是正确的
            return cal(m + 1, n, a, b) + cal(m, n + 1, a, b);
        } else if (m == a && n < b) {//到最下面一排了
            if (n + 1 == b)//相邻一格
                return 1;
            return cal(m, n + 1, a, b);
        } else if (n == b && m < a) {//到最右边一列
            if (m + 1 == a)//相邻一格
                return 1;
            return cal(m + 1, n, a, b);
        }
        return 0;//格式限制,没啥用
    }
}

用递归,每一步时,要到达下一步,只能下m+1或者右n+1,即f(a,b)=f(a-1)+f(b-1); 到边界就只能执行某一个,没到边界就都要加;

到最后一步的上一步时就得1输出就行了

全部评论

相关推荐

FieldMatching:看成了猪头顾问,不好意思
点赞 评论 收藏
分享
03-24 16:56
已编辑
肇庆学院 后端
一天代码十万三:你看看人家进大厂的简历就知道了,你这个学历得acm+大厂实习+熟悉底层+运气很好 才有可能进某个大厂,因为大部分是直接卡学历的
投递快手等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务