白駿9465号(Java)
DP
Javaで白俊9465号を解読しました.結局解けなかった.DPを殺したい
質問リンクを添付します.
https://www.acmicpc.net/problem/9465
DPを使用して各位置の最低価格を更新する
この原理で最後まで計算して、最後の列の上下2つの格の中でもっと大きいやつを出力すればいい.これを次のようにコードで表します.
結果点火式...呜呜...あ…!!
Javaで白俊9465号を解読しました.結局解けなかった.DPを殺したい
質問リンクを添付します.
https://www.acmicpc.net/problem/9465
DPを使用して各位置の最低価格を更新する
この原理で最後まで計算して、最後の列の上下2つの格の中でもっと大きいやつを出力すればいい.これを次のようにコードで表します.
Integer solution(){
int[][] dp = new int[2][N+1];
dp[0][1] = map[0][1];
dp[1][1] = map[1][1];
for(int i=2; i<=N; i++){
dp[0][i] = Math.max(dp[1][i-2], dp[1][i-1]) + map[0][i];
dp[1][i] = Math.max(dp[0][i-2], dp[0][i-1]) + map[1][i];
}
return Math.max(dp[0][N], dp[1][N]);
}
コード全体を以下に示します.import java.io.*;
import java.util.StringTokenizer;
public class boj9465 {
static int T,N;
static int[][] map;
static Integer solution(){
int[][] dp = new int[2][N+1];
dp[0][1] = map[0][1];
dp[1][1] = map[1][1];
for(int i=2; i<=N; i++){
dp[0][i] = Math.max(dp[1][i-2], dp[1][i-1]) + map[0][i];
dp[1][i] = Math.max(dp[0][i-2], dp[0][i-1]) + map[1][i];
}
return Math.max(dp[0][N], dp[1][N]);
}
public static void main(String[] args) throws IOException {
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk;
T = Integer.parseInt(bfr.readLine());
for(int t=0; t<T; t++){
N = Integer.parseInt(bfr.readLine());
map = new int[2][N+1];
for(int i=0; i<2; i++){
stk = new StringTokenizer(bfr.readLine());
for(int j=1; j<=N; j++){
map[i][j] = Integer.parseInt(stk.nextToken());
}
}
System.out.println(solution());
}
}
}
このブログの解答を参照してください.結果点火式...呜呜...あ…!!
Reference
この問題について(白駿9465号(Java)), 我々は、より多くの情報をここで見つけました https://velog.io/@topqr123q/백준-9465번-자바テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol