全RE了求调,暴搜
查看原帖
全RE了求调,暴搜
926491
zblueboil楼主2023/10/2 11:43
#include <bits/stdc++.h>

using namespace std;

int n,m,mp[55][55],ans = 0x3f3f3f;
bool vis[55][55];
int dx[3] = {0,1,0};
int dy[3] = {1,0,-1};

bool In(int x, int y)
{
    return 1<=x<=n&&1<=y<=m;
}

void Dfs(int x, int y, int sum)
{
    if (x == n && y == m)
    {
        if(ans == 0x3f3f3f)
            ans = sum;
        ans = max(ans,sum);
        return;
    }
    for(int i = 0;i<3;i++)
    {
        int tx = x + dx[i];
        int ty = y + dy[i];
        if(In(tx,ty)&&!vis[tx][ty])
        {
            vis[tx][ty] = true;
            Dfs(tx, ty, sum + mp[tx][ty]);
            vis[tx][ty] = false;
        }
    }
}

int main()
{
    cin>>n>>m;
    for(int i = 1;i<=n;i++)
        for(int j = 1;j<=m;j++)
            cin>>mp[i][j];
    vis[1][1] = true;
    Dfs(1,1,mp[1][1]);
    cout<<ans<<endl;
    return 0;
}
2023/10/2 11:43
加载中...