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];
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章