rt,本蒟蒻只拿了10分,求大佬帮调
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 110;
int n, k;
int a[N][N], rec[N][N][N * N];
int dfs(int x, int y, int cnt)
{
if (rec[x][y][cnt] != 0) return rec[x][y][cnt];
if (x > n) return 0;
int sum = 0;
if (cnt < k)
{
for (int i = 1; i <= x + 1; i++)
{
if (dfs(x + 1, i, cnt + 1) + 3 * a[x][y] > sum)
{
sum = dfs(x + 1, i, cnt + 1) + 3 * a[x][y];
}
sum = max(sum, dfs(x + 1, i, cnt) + a[x][y]);
}
}
else
{
for (int i = 1; i <= x + 1; i++)
{
sum = max(sum, dfs(x + 1, i, cnt) + a[x][y]);
}
}
return rec[x][y][cnt] = sum;
}
signed main()
{
cin >> n >> k;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
{
cin >> a[i][j];
}
}
cout << dfs(1, 1, 0) << endl;
return 0;
}