- C++
|
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
|
#include<cstdio>
#include<algorithm>
using namespace std;
int dp[501][501];
int main(void)
{
int n,big=0;
scanf("%d", &n);
for (int i=1; i<=n; i++)
for (int j=1; j<=i; j++)
scanf("%d", &dp[i][j]);
for (int i=1; i<=n; i++) {
for (int j=1; j<=i; j++) {
if (j==1) dp[i][1]+=dp[i-1][1];
else if (j==i) dp[i][j]+=dp[i-1][j-1];
else
dp[i][j]=dp[i][j]+max(dp[i-1][j-1], dp[i-1][j]);
if (big<dp[i][j]) big=dp[i][j];
}
}
printf("%d", big);
return 0;
}
|
cs |
- JAVA
|
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
|
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
int[][] arr = new int[n+1][n+1];
for(int i=1; i<=n; i++){
st = new StringTokenizer(br.readLine(), " ");
for(int j=1; j<=i; j++){
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
for(int i=2; i<=n; i++){
for(int j=1; j<=i; j++){
if(j==1){
arr[i][j] = arr[i-1][j]+arr[i][j];
} else if(j==i){
arr[i][j] = arr[i-1][j-1]+arr[i][j];
} else {
arr[i][j] = Math.max(arr[i-1][j-1]+arr[i][j], arr[i-1][j]+arr[i][j]);
}
}
}
int ans=0;
for(int i=1; i<=n; i++){
ans = Math.max(ans, arr[n][i]);
}
System.out.println(ans);
}
}
|
cs |
'백준 2 > DP' 카테고리의 다른 글
| [백준 2193] 이친수 (0) | 2020.12.07 |
|---|---|
| [백준 10844] 쉬운 계단 수 (0) | 2020.12.07 |
| [백준 11727] 2xN 타일링 2 (0) | 2020.12.07 |
| [백준 11726] 2xN 타일링 (C++/Java) (0) | 2020.12.07 |
| [백준 2579] 계단 오르기 (C++/Java) (0) | 2020.12.07 |