Shopee的办公室(二)Java

题目描述

shopee的办公室非常大,小虾同学的位置坐落在右上角,而大门却在左下角,可以把所有位置抽象为一个网格(门口的坐标为0,0),小虾同学很聪明,每次只向上,或者向右走,因为这样最容易接近目的地,但是小虾同学不想让自己的boss们看到自己经常在他们面前出没,或者迟到被发现。他决定研究一下如果他不通过boss们的位置,他可以有多少种走法?

题解代码

import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
        Scanner in =  new Scanner(System.in);
        int x = in.nextInt();
        int y = in.nextInt();
        int n = in.nextInt();
        int a,b;
        long[][] arr = new long[x+1][y+1];//注意是x+1  y+1 的矩阵
        for(int i=0;i<n;i++){
            a = in.nextInt();
            b = in.nextInt();
            arr[a][b] = -1;//将boss们的位置设置为不可走
        }
        long count = countWay(x,y,arr);
        System.out.println(count);
    }
    //方案数要用long类型,所以返回long类型
    public static long countWay(int x,int y,long[][] arr){
        for(int i = 0;i<= x ;i++)
            arr[i][0] = 1;//座位和门在一行上
        for(int i = 0;i<= y ;i++)
            arr[0][i] = 1;//座位和门在一列上
        for(int i = 1;i<= x;i++){ 
            for(int j=1;j<= y;j++){
                if(arr[i][j] == -1)
                    arr[i][j] = 0; //即不能走,此处方案数为0
                else
                    arr[i][j] = arr[i][j-1]+arr[i-1][j]; //动态规划思想,动态方程
            }
        }
        return arr[x][y];
    }
}
发布了75 篇原创文章 · 获赞 129 · 访问量 8091

猜你喜欢

转载自blog.csdn.net/qq_37717494/article/details/105151963