AcWing 898. 数字三角形-JAVA
原题链接
简单
作者:
鼠鼠我
,
2021-02-18 00:15:39
,
所有人可见
,
阅读 260
import java.util.Scanner;
//线性dp
//下标从0开始还是从1开始,看看如果有i-1就从1开始
public class Main {
static int N = 510;
static int[][] a = new int[N][N],f = new int[N][N];
static int INF = 0x3f3f3f3f;
public static void main(String[] arg)
{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
a[i][j] = sc.nextInt();
}
}
for(int i=0;i<=n;i++)//初始化,注意边界
{
for(int j=0;j<=i+1;j++)
f[i][j] = -INF;
}
f[1][1] = a[1][1];
for(int i=2;i<=n;i++)//i从2开始
{
for(int j=1;j<=i;j++)
{
f[i][j] = Math.max(f[i-1][j-1]+a[i][j],f[i-1][j]+a[i][j]);
}
}
int res = -INF;
for(int i=1;i<=n;i++)//最后一行遍历最大值
res = Math.max(res,f[n][i]);
System.out.println(res);
}
}