#12227. 珅泽教育CSP-J第一轮模拟考第二十三套 第 42 题

珅泽教育CSP-J第一轮模拟考第二十三套 第 42 题

三、完善程序(共 10 题,每题 3 分,共 30 分)

完善程序(2):数字矩阵

给定一个 NNMM 列的非负整数矩阵,需要从中取出若干个数字,使取出的任意两个数字不相邻。如果一个数字位于另一个数字周围相邻的 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;
}
  1. ⑤处应填( )。

{{ select(1) }}

  • dfs(n, m)
  • dfs(1, 1)
  • dfs(0, 0)
  • dfs(1, 0)