1. 程式人生 > 其它 >#力扣 LeetCode LCP 22. 黑白方格畫 @FDDLC

#力扣 LeetCode LCP 22. 黑白方格畫 @FDDLC

技術標籤:演算法&資料結構

題目描述:

https://leetcode-cn.com/problems/ccw6C7/

Java程式碼:

class Solution { //f(2,3)=4,f(3,5)=9
    public int c(int n,int m){
        int ans=720; //1*2*3*4*5*6=720
        for(int i=1;i<=m;i++)ans=ans*(n-i+1)/i;
        return ans/720;
    }
    public int paintingPlan(int n, int k) {
        int ans=0;
        for(int i=0;i<n;i++){ //i,j無需等於n
            for(int j=0;j<n;j++)if((i+j)*n-i*j==k)ans+=c(n,i)*c(n,j);
        }
        return n*n==k?1:ans; //n*n==k時需要特殊處理
    }
}

稍微修改一下:

class Solution { //f(2,3)=4,f(3,5)=9
    public int c(int n,int m){
        int ans=1;
        for(int i=1;i<=m;i++)ans=ans*(n-i+1)/i;
        return ans;
    }
    public int paintingPlan(int n, int k) {
        int ans=0;
        for(int i=0;i<n;i++){ //i,j無需等於n
            for(int j=0;j<n;j++)if((i+j)*n-i*j==k)ans+=c(n,i)*c(n,j);
        }
        return n*n==k?1:ans; //n*n==k時需要特殊處理
    }
}