Search
Duplicate
๐Ÿฅˆ

์Šคํ‹ฐ์ปค

์ฃผ์ฐจ
12
๋ฌธ์ œ๋ฒˆํ˜ธ
9465
์–ธ์–ด
ํ‹ฐ์–ด
์‹ค๋ฒ„
์œ ํ˜•
DP
nj_Blog
O
nj_์ƒํƒœ
์™„๋ฃŒ
์ดํ•ด๋„
ํ’€์ด
์‚ฌ๋žŒ
์ดํ•ด๋„ 2
13 more properties

๋ฌธ์ œ๋งํฌ

์ฝ”๋“œ ์ œ์ถœ ๊ธฐ๋ก (๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์‹œ๊ฐ„)

๋ฉ”๋ชจ๋ฆฌ : 2676 KB
์‹œ๊ฐ„ : 132 ms

Code

#include <stdio.h> #include <algorithm> int dp[2][100001], arr[2][100001]; int main(){ int t, n, i, j; scanf("%d", &t); while(t--) { scanf("%d", &n); for (i = 0; i <= 1; i++) for (j = 1; j <= n; j++) scanf("%d", &arr[i][j]); dp[0][0] = dp[1][0] = 0; dp[0][1] = arr[0][1]; dp[1][1] = arr[1][1]; for (i = 2; i <= n; i++) { dp[0][i] = std::max(dp[1][i - 1], dp[1][i - 2]) + arr[0][i]; dp[1][i] = std::max(dp[0][i - 1], dp[0][i - 2]) + arr[1][i]; } printf("%d\n", std::max(dp[0][n], dp[1][n])); } return (0); }
C++
๋ณต์‚ฌ

๋ฉ”๋ชจ

ํ˜„์žฌ ์Šคํ‹ฐ์ปค์—์„œ ์„ ํƒ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํ‹ฐ์ปค๋Š” 1์นธ ์˜ค๋ฅธ์ชฝ ๋Œ€๊ฐ์„  or 2์นธ ์˜ค๋ฅธ์ชฝ ๋Œ€๊ฐ์„ ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค
๊ทธ ์ค‘์—์„œ ์ตœ๋Œ“๊ฐ’์ด ๋˜๋Š” ๊ฐ’์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด good
๊ฐ ์œ„์น˜์—์„œ์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ฐ€์ง€๋Š” dp ๋ฐฐ์—ด์„ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑ

<๊ณต์‹>

0๋ฒˆ์งธ ์ค„
dp[0][i]=arr[0][i]+Max(dp[1][iโˆ’1],dp[1][iโˆ’2])dp[0][i] = arr[0][i] + Max(dp[1][i-1], dp[1][i-2])
1๋ฒˆ์งธ ์ค„
dp[1][i]=arr[1][i]+Max(dp[0][iโˆ’1],dp[0][iโˆ’2])dp[1][i] = arr[1][i] + Max(dp[0][i-1], dp[0][i-2])
2๋ฒˆ์งธ ~ n๋ฒˆ์งธ ๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ์œ„์˜ ๊ณต์‹์„ ๋Œ€์ž…

<์ดˆ๊ธฐํ™”>

dp[0][0] = 0; dp[1][0] = 0; dp[0][1] = arr[0][1]; dp[1][1] = arr[1][1];
C++
๋ณต์‚ฌ

์ฐธ์กฐ

โ€ข