RE求助
查看原帖
RE求助
479532
InterN_NOT_FOUND楼主2023/9/11 19:30
const int N = 60;

int m = read(), n = read(), f[N * 2][N][N], a[N][N];

signed main()
{
	for (int i = 1; i <= m; ++i) 
		for (int j = 1; j <= n; ++j)
			a[i][j] = read();
			
	memset(f, -1, sizeof(f));
	
	f[2][1][1] = 0;
	
	for (int i = 3; i < m + n; ++i) {
		for (int p = 1; p < n; ++p) {
			for (int q = p + 1; q <= n; ++q) {
				int tmp = f[i][p][q];
				
				tmp = max(tmp, f[i - 1][p][q]);
				tmp = max(tmp, f[i - 1][p - 1][q]);
				tmp = max(tmp, f[i - 1][p][q - 1]);
				tmp = max(tmp, f[i - 1][p - 1][q - 1]);
				
				if (tmp == -1) continue;
				
				f[i][p][q] = tmp + (i - q < 0 ? 0 : a[i - q][q]) + (i - p < 0 ? 0 : a[i - p][p]);
			} 
		}
	}
	
	out(f[m + n - 1][n - 1][n], 'l');
	return 0;
}

整体思路参考的第一篇题解,但是RE4个点,找不出有什么差别

2023/9/11 19:30
加载中...