记忆化搜索 70pts 求调.
查看原帖
记忆化搜索 70pts 求调.
609249
Walter_Fang楼主2024/7/3 22:33

rt.

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=2e2+10;
ll n,k,i,j,a[N][N],f[N][N][N];
ll dfs(ll x,ll y,ll z){
	if(x<1||x>n||y<1||y>n)return 0;
	if(f[x][y][z]!=-1)return f[x][y][z];
	if(z<k)f[x][y][z]=max(f[x][y][z],max(dfs(x+1,y,z+1)+a[x][y]*3,dfs(x+1,y+1,z+1)+a[x][y]*3));
	return f[x][y][z]=max(f[x][y][z],max(dfs(x+1,y,z)+a[x][y],dfs(x+1,y+1,z)+a[x][y]));
}
int main(){
    cin>>n>>k;memset(f,-1,sizeof f);
	for(i=1;i<=n;i++)for(j=1;j<=i;j++)cin>>a[i][j];
	cout<<dfs(1,1,0);
}
2024/7/3 22:33
加载中...