[アルゴリズム学習]白駿11726
質問元:https://www.acmicpc.net/problem/11726
質問へのアクセス
2 XNタイリング問題は動的プログラミングアルゴリズムの1つの問題であり,上から下へと下から上への解法がある.この問題はbottom-up方式で解決された.
(bottom-upは点火式を使用しています.)
n=1の場合、タイルを敷くことができる数は1種類あります
n=2の場合、タイルを敷くことができる数は2種類あります.
n=3の場合、タイルを敷くことができる数は3種類あります.
n=4の場合、タイルを敷くことができる数は5種類あります
すなわち、nが1又は2を除いて剥がすタイルの数は、(n−1)のタイルの数+(n−2)のタイルの数である.
コードとして記述すると、次のようになります.
ソースコード
質問へのアクセス
2 XNタイリング問題は動的プログラミングアルゴリズムの1つの問題であり,上から下へと下から上への解法がある.この問題はbottom-up方式で解決された.
(bottom-upは点火式を使用しています.)
n=1の場合、タイルを敷くことができる数は1種類あります
n=2の場合、タイルを敷くことができる数は2種類あります.
n=3の場合、タイルを敷くことができる数は3種類あります.
n=4の場合、タイルを敷くことができる数は5種類あります
すなわち、nが1又は2を除いて剥がすタイルの数は、(n−1)のタイルの数+(n−2)のタイルの数である.
コードとして記述すると、次のようになります.
ソースコード
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ_11726 {
static int[] dt;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
dt = new int[1001];
System.out.println(dp(N));
}
public static int dp(int N){
if(dt[N] != 0) return dt[N];
if(N == 1) return 1;
if(N == 2) return 2;
return dt[N] = (dp(N-1) + dp(N-2)) % 10007;
}
}
Reference
この問題について([アルゴリズム学習]白駿11726), 我々は、より多くの情報をここで見つけました https://velog.io/@seokhwan-an/Algorithm-Study-백준-11726テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol