SMALL
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #include<iostream> #include<vector> #include<algorithm> #include <cmath> using namespace std; int dp [1001][1001]; int tr [1001][1001]; /* a == 0과 마지막줄은 max없음 dp[n] = board[n][a] + max(dp[n-1][a], dp[n-1][a-1]) */ int _max(int a, int b) { return a > b ? a : b; } int main() { int n; cin >> n; for(int i =1 ; i < n+1 ; i++){ for(int a =1 ; a < i+1 ; a++){ cin >> tr[i][a]; } } dp[1][1] = tr[1][1]; for(int i =2 ;i <= n ; i++){ for(int a = 1 ; a <= i ; a++){ if(a == i) { dp[i][a] = tr[i][a] + dp[i-1][a]; } if(a == 1) dp[i][a] = tr[i][a] + dp[i-1][a]; /*else if(a == i) { dp[i][a] = tr[i][a] + dp[i-1][a]; }*/ else dp[i][a] = tr[i][a]+_max(dp[i-1][a-1], dp[i-1][a]); } } int ans = 0; for(int i = 1 ; i < n+1; i++) { //cout << dp[n][i] << endl; if(ans < dp[n][i]) ans = dp[n][i]; } cout << ans ; } | cs |
LIST
'기타[etc] > 알고리즘' 카테고리의 다른 글
[알고리즘] 124나라의 숫자 (0) | 2018.03.27 |
---|---|
[알고리즘] 진법 변환 (0) | 2018.03.27 |
[알고리즘] 소수의 개수 찾기 - 에라토스테네스의 채 (0) | 2018.03.27 |
[알고리즘] DP- 땅따먹기 (0) | 2018.03.24 |
[알고리즘] DP-가장 큰 정사각형 찾기 (0) | 2018.03.23 |