加个记忆化呀。 我也是递归写的。 int a[1030][1030], n, mem[1030][1030]; int f(int i, int j) { if (i == n) return a[i][j]; if (mem[i][j] != -1) return mem[i][j]; return mem[i][j] = max(f(i+1, j), f(i+1, j+1)) + a[i][j]; } int main() { memset(mem, -1, sizeof(mem)); cin >> n; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= i; ++j) cin >> a[i][j]; } cout << f(1, 1); return 0; }
点赞 5

相关推荐

牛客网
牛客企业服务