BOJ 11051異項係数2[Java]



質問する



方法

  • 復帰開始直後または反復解答時にタイムアウトします.
  • そこで,下図に示すように,この係数を再理解し,動的計画法で解いた.

    (出典:https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=vollollov&logNo=220947452823)

    インプリメンテーション

    import java.io.*;
    import java.util.*;
    
    class Main {
    
        public static void main(String[] args) throws Exception {
            // for coding
            // System.setIn(new FileInputStream("./input/input_11051.txt"));
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
            StringTokenizer st = new StringTokenizer(br.readLine(), " ", false);
    
            int N = Integer.parseInt(st.nextToken());
            int K = Integer.parseInt(st.nextToken());
    
            int[][] dp = new int[N + 1][N + 1];
            
            for (int i = 0; i < dp.length; i++) {
                for (int j = 0; j <= i; j++) {
                    if (i == j || j == 0) {
                        dp[i][j] = 1;
                    } else {
                        dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j]) % 10007;
                    }
                }
            }
    
            bw.write(dp[N][K] + "");
    
            bw.close();
        }
    }

    送信