题号:1006
同方格取数,只不过是有个别的地方需要一些变动。我傻傻的有一些地方没变……2333
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include<iostream> #include<algorithm> #include<string> #include<utility> #include<queue> #include<cstdlib> #include<cstring> #include<map> using namespace std; int m,n; int f[55][55][55][55],arr[55][55]; int main(){ ios::sync_with_stdio(false); cin >> m >> n; for (int i = 1; i <= m; i++){ for (int j = 1; j <= n; j++){ cin >> arr[i][j]; } } for (int i = 1; i <= m; i++){ for (int j = 1; j <= n; j++){ for (int k = 1; k <= m; k++){ for (int l = 1; l <= n; l++){ f[i][j][k][l] = max(f[i - 1][j][k - 1][l], f[i][j - 1][k - 1][l]); f[i][j][k][l] = max(f[i][j][k][l], f[i - 1][j][k][l - 1]); f[i][j][k][l] = max(f[i][j][k][l], f[i][j - 1][k][l - 1]); if (i == k && j == l)f[i][j][k][l] += arr[i][j]; else f[i][j][k][l] += arr[i][j] + arr[k][l]; } } } } cout << f[m][n][m][n]; } |
20180802
做的烦得要死。。。上面的代码没看懂^^^^……………….
https://www.luogu.org/blog/user20197/solution-p1006
https://www.luogu.org/blog/user26182/solution-p1006
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include<iostream> #include<string> #include<cstring> #include<algorithm> using namespace std; int m, n; int arr[205][205]; int f[55][55][55][55]; int main() { cin >> m >> n; for (int i = 1; i <= m; i++)for (int j = 1; j <= n; j++)cin >> arr[i][j]; for (int i = 1; i <= m; i++)for (int j = 1; j <= n; j++)for (int k = 1; k <= m; k++)for (int l = j + 1; l <= n; l++) { f[i][j][k][l] = max(max(f[i - 1][j][k - 1][l], f[i - 1][j][k][l - 1]), max(f[i][j - 1][k - 1][l], f[i][j - 1][k][l - 1])) + arr[i][j] + arr[k][l]; } cout << f[m][n-1][m-1][n]; } |