记忆化搜索过不了样例,求调
查看原帖
记忆化搜索过不了样例,求调
877271
legolas7楼主2024/1/29 11:50

rt,代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#define int long long
#define N 105
using namespace std;
int n,k,arr[N][N],dp[N][N][2],ans;
int dfs(int i,int j,int mark,int sum){
	if(i==n+1) return sum;
	if(dp[i][j][mark]!=-1) return dp[i][j][mark];
	for(int m=0;m<=1;m++){
		if(mark<k){
			dp[i][j][mark]=max(dp[i][j][mark],dfs(i+1,j+m,mark+1,sum+3*arr[i][j]));
		}
		dp[i][j][mark]=max(dp[i][j][mark],dfs(i+1,j+m,mark,sum+arr[i][j]));
	}
	return dp[i][j][mark];
}
signed main(){
	memset(dp,-1,sizeof(dp));
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=i;j++) cin>>arr[i][j];
	}
	cout<<dfs(1,1,0,0);
	return 0;
}
2024/1/29 11:50
加载中...