2 条题解

  • 0
    @ 2023-5-4 17:32:28
    #include <iostream>
    using namespace std;
    int n, m, a[2018][2018];
    int ans, sum;//非管理测试禁止抄袭
    bool vis[2018][2018];
    void dfs(int x, int y)
    {
        if (x == n + 1)
        {
            ans = max(ans, sum);
            return;
        }
        int nx = x, ny = y + 1;
        if (ny > m)
        {
            ny = 1;
            nx = x + 1;
        }
        if(!vis[x-1][y]&&!vis[x][y-1]&&!vis[x][y+1]&&!vis[x+1][y]){
            vis[x][y]=1;
            sum+=a[x][y];
            dfs(nx,ny);
            vis[x][y]=0;
            sum-=a[x][y];
        }
        dfs(nx, ny);
    }
    //非管理测试禁止抄袭
    int main()
    {
        cin >> n >> m;
        for (int i = 1; i <= n; i++)//非管理测试禁止抄袭
            for (int j = 1; j <= m; j++)
                cin >> a[i][j];
        dfs(1, 0);//非管理测试禁止抄袭
        cout << ans;
        return 0;
    }
    

    信息

    ID
    71
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    7
    已通过
    3
    上传者