#12223. 珅泽教育CSP-J第一轮模拟考第二十三套 第 38 题
珅泽教育CSP-J第一轮模拟考第二十三套 第 38 题
三、完善程序(共 10 题,每题 3 分,共 30 分)
完善程序(2):数字矩阵
给定一个 行 列的非负整数矩阵,需要从中取出若干个数字,使取出的任意两个数字不相邻。如果一个数字位于另一个数字周围相邻的 8 个格子之一,就认为这两个数字相邻。求所取数字之和的最大值。
#include <bits/stdc++.h>
using namespace std;
bool vis[8][8];
int n, m, a[8][8], mx, sum;
void dfs(int x, int y) {
if (①)
return;
if (②) {
vis[x][y] = true;
sum += a[x][y];
mx = max(mx, sum);
if (③)
dfs(x, y + 1);
else
dfs(x + 1, 1);
sum -= a[x][y];
vis[x][y] = 0;
}
if (③)
dfs(x, y + 1);
else
dfs(x + 1, 1);
}
int main() {
int T;
cin >> T;
while (T--) {
④
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> a[i][j];
⑤
cout << mx << endl;
}
return 0;
}
- ①处应填( )。
{{ select(1) }}
x == mx == m + 1x == nx == n + 1