μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- κ·Έλννμ
- μν
- λ°μ΄ν°λ² μ΄μ€
- μ λ ¬
- μκ³ λ¦¬μ¦
- db
- λμ κ³νλ²
- μ€λΈμ
- μ°μ μμν
- DP
- νμ΄μ¬
- λμ ν©
- κΉμ΄μ°μ νμ
- DFS
- ꡬν
- λ³ν©μ λ ¬
- ν°μ€ν 리μ±λ¦°μ§
- λλΉμ°μ νμ
- LIS
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- SQL
- μμꡬνκΈ°
- 그리λ
- νλ‘κ·Έλλ¨Έμ€
- λ°±μ€
- κ·Έλν
- μλ£κ΅¬μ‘°
- BFS
- λ¨Έμ§μνΈ
- μμνμ
πππ°πΈ π£πΆπ΅ π΄π΅π¦π’π₯πΊ
[λ°±μ€] 2240λ²: μλλ무 - C++ λ³Έλ¬Έ
λ¬Έμ
μλλ μλλ₯Ό μ’μνλ€. κ·Έλμ μ§μ μλλ무λ₯Ό μ¬μ΄λκ³ , μ¬κΈ°μ μ΄λ¦¬λ μλλ₯Ό λ¨Ήκ³ λ νλ€. νμ§λ§ μλλ ν€κ° μμμ μλλ₯Ό λ°λ¨Ήμ§λ λͺ»νκ³ , μλκ° λ¨μ΄μ§ λκΉμ§ κΈ°λ€λ¦° λ€μμ λ¨μ΄μ§λ μλλ₯Ό λ°μμ λ¨Ήκ³ λ νλ€. μλλ₯Ό μ‘μ λμλ μλκ° ν곡μ μμ λ μ‘μμΌ νλλ°, μ΄λ μλκ° λ§λλ§λνμ¬ λ°λ₯μ λ¨μ΄μ§λ©΄ λͺ» λ¨Ήμ μ λλ‘ λκ°μ§κΈ° λλ¬Έμ΄λ€.
맀 μ΄λ§λ€, λ κ°μ λ무 μ€ νλμ λ무μμ μ΄λ§€κ° λ¨μ΄μ§κ² λλ€. λ§μ½ μ΄λ§€κ° λ¨μ΄μ§λ μκ°, μλκ° κ·Έ λ무μ μλμ μ μμΌλ©΄ μλλ κ·Έ μ΄λ§€λ₯Ό λ°μλ¨Ήμ μ μλ€. λ κ°μ λ무λ κ·Έλ€μ§ λ©λ¦¬ λ¨μ΄μ Έ μμ§ μκΈ° λλ¬Έμ, μλλ νλμ λ무 μλμ μ μλ€κ° λ€λ₯Έ λ무 μλλ‘ λΉ λ₯΄κ²(1μ΄λ³΄λ€ ν¨μ¬ 짧μ μκ°μ) μμ§μΌ μ μλ€. νμ§λ§ μλλ 체λ ₯μ΄ κ·Έλ€μ§ μ’μ§ λͺ»ν΄μ λ§μ΄ μμ§μΌ μλ μλ€.
μλλ T(1≤T≤1,000)μ΄ λμ λ¨μ΄μ§κ² λλ€. μλλ μ΅λ W(1≤W≤30)λ²λ§ μμ§μ΄κ³ μΆμ΄ νλ€. 맀 μ΄λ§λ€ μ΄λ λ무μμ μλκ° λ¨μ΄μ§μ§μ λν μ λ³΄κ° μ£Όμ΄μ‘μ λ, μλκ° λ°μ μ μλ μλμ κ°μλ₯Ό ꡬν΄λ΄λ νλ‘κ·Έλ¨μ μμ±νμμ€. μλλ 1λ² μλλ무 μλμ μμΉν΄ μλ€κ³ νλ€.
μ λ ₯
첫째 μ€μ λ μ μ T, Wκ° μ£Όμ΄μ§λ€. λ€μ Tκ°μ μ€μλ κ° μκ°μ μλκ° λ¨μ΄μ§λ λ무μ λ²νΈκ° 1 λλ 2λ‘ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ μλκ° λ°μ μ μλ μλμ μ΅λ κ°μλ₯Ό μΆλ ₯νλ€.
λμ κ³νλ²μ μ΄μ©νμ¬ νΈλ λ¬Έμ .
μλκ° μ΄λ λ무μμ λ¨μ΄μ§λ μλκ° νμ¬ μμΉμμ μ νν μ μλ λ°©λ²μ λκ°μ§λ‘ μΆλ¦΄ μ μλ€.
1. μ΄λνλ€.
2. μ΄λνμ§ μλλ€.
μ¬κΈ°μ νμ¬ μκ° i, μ΄λ νμ j, νμ¬ μμΉ k λͺ¨λλ₯Ό κ΄λ¦¬ν 3μ°¨μ λ°°μ΄ count[i][j][k]λ₯Ό μ΄μ©νμ¬ μΈμ΄ μμ λ€μκ³Ό κ°λ€.
count[i][j][1] = max(count[i - 1][j][1], count[i - 1][j - 1][2]) + (plum[i] == 1)
count[i][j][2] = max(count[i - 1][j - 1][1], count[i - 1][j][2]) + (plum[i] == 2)
κ·Έ ν λ°°μ΄ λ΄ κ° μ€ κ°μ₯ ν° κ°μ΄ κ²°κ³Όκ° λλ€. μ΄κΈ° κ°μ μλμ μ²μ μμΉκ° 1μ΄κΈ° λλ¬Έμ count[1][0][1]κ³Ό count[1][1][2]λ§ μ΄κΈ°νν΄μ€ λ€ λ¬Έμ λ₯Ό νλ©΄ λλ€.
μκ°ν΄μ€κ² λ§μ μ΄λ €μμ ... λ§μ΄ κ³ μνλ λ¬Έμ μλ€γ γ
μ΄λνμλ₯Ό μ‘°κ±΄λ¬Έμ΄ μλ λ°λ³΅λ¬Έμ ν΅ν΄ κ΄λ¦¬ν΄μ£Όλ λ°©λ²μ μ²μ λ΄μ μ΄λ €μ λ€....
μ½λ
#include <cstdio>
#define MAX 1001
int plum[MAX][3];
int T, W;
int DP();
int max(int a, int b) {
return (a > b ? a : b);
}
int main(void) {
scanf("%d %d", &T, &W);
for(int i = 1; i <= T; i++) {
int num;
scanf("%d", &num);
plum[i][num] = 1;
}
printf("%d\n", DP());
return 0;
}
int DP() {
int result = 0; // μ΅μ’
κ²°κ³Ό
int count[MAX][32][3]; // μλ κ°μ μΈλ λ°°μ΄
count[1][0][1] = plum[1][1];
count[1][1][2] = plum[1][2];
result = max(count[1][0][1], count[1][1][2]);
for(int i = 2; i <= T; i++) {
for(int j = 0; j <= W; j++) {
count[i][j][1] = max(count[i - 1][j][1], count[i - 1][j - 1][2]) + plum[i][1];
count[i][j][2] = max(count[i - 1][j - 1][1], count[i - 1][j][2]) + plum[i][2];
result = max(max(result, count[i][j][1]), count[i][j][2]);
}
}
return result;
}
'μ½λ©ν μ€νΈ μ€λΉ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 2302λ²: κ·Ήμ₯ μ’μ - C++ (0) | 2022.07.21 |
---|---|
[λ°±μ€] 1904: 01νμΌ - C++ (0) | 2022.07.15 |
[λ°±μ€] 11047: λμ 0 - C++ (0) | 2022.07.12 |
[λ°±μ€] 15988λ²: 1, 2, 3 λνκΈ° 3 - C++ (0) | 2022.07.08 |
[λ°±μ€] 15486λ²: ν΄μ¬ 2 - C++ (0) | 2022.07.07 |