ピラミッドパス
7725 ワード
以下のピラミッドがある場合,Aから最下位のK,L,M,N,Oへの経路を求める問題がある.
各場所で左下または右下から可能です.
この問題はdpで解決できる.例えば、A〜Lの経路は、A〜Gの経路と、A〜Hの経路とが加算された値である.
さらに、AからHへの経路は、AからD、Eへの経路に加算された値に等しい.
これらのオーバーラップ部分を有する問題は,dpを用いて容易に解決できる.
ピラミッドを行と列がそれぞれ5の2次元配列に入れ、以下のようにします.
public class Main
{
public static void solution(int m, int n)
{
int[][] street = new int[n][m];
street[0][0] = 1;
for (int i=1; i<n; i++)
{
for (int j=0; j<=i; j++)
{ // 첫 열이거나 (ABDGK)
// ACFJO 처럼 끝 대각선인 경우
if (j == 0 || i == j)
street[i][j] = 1; // 경로가 1개 밖에 없다
else // 그렇지 않은 경우
street[i][j] = street[i-1][j] + street[i-1][j-1];
}
}
for (int i=0; i<n; i++)
{
for (int j=0; j<m; j++)
{
System.out.print(street[i][j] + " ");
}
System.out.println();
}
}
public static void main(String[] args)
{
int m = 5;
int n = 5;
solution(m, n);
}
}
Reference
この問題について(ピラミッドパス), 我々は、より多くの情報をここで見つけました https://velog.io/@bluesun147/피라미드-경로テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol