10分,求调
查看原帖
10分,求调
1280343
a111111111111楼主2024/10/20 10:16
#include<bits/stdc++.h>
using namespace std;
int n,z=INT_MIN,m;
vector<vector<int>> a,v,vv;
struct ss{vector<vector<int>> v; int x,y,k;};
void f(int vx,int vy)
{   
    queue<ss> q;
    q.push({vv,vx,vy,a[vx][vy]});
    while(q.size())
    {
        ss p=q.front(); q.pop();
        vector<vector<int>> lvv=p.v;
        int sx=p.x,sy=p.y,sk=p.k;
        if(sk<=v[sx][sy]) continue;
        v[sx][sy]=max(v[sx][sy],sk);
        if(sx==n-1 && sy==m-1)
        {
            z=max(z,sk);
            continue;
        }
        if(sx+1<n && !lvv[sx+1][sy])
        {
            lvv[sx+1][sy]=1;
            q.push({lvv,sx+1,sy,sk+a[sx+1][sy]});
            lvv[sx+1][sy]=0; 
        }
        if(sy+1<m && !lvv[sx][sy+1])
        {
            lvv[sx][sy+1]=1;
            q.push({lvv,sx,sy+1,sk+a[sx][sy+1]});
            lvv[sx][sy+1]=0;
        }
        if(sy-1>=0 && !lvv[sx][sy-1])
        {
            lvv[sx][sy-1]=1;
            q.push({lvv,sx,sy-1,sk+a[sx][sy-1]});
            lvv[sx][sy-1]=0;
        }
    }
    return ;
}
int main()
{
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    cin>>n>>m;
    a.resize(n,vector<int>(m,0));
    v.resize(n,vector<int>(m,INT_MIN));
    vv.resize(n,vector<int>(m,0));
    for(int x=0;x<n;x++)
        for(int y=0;y<m;y++)
            cin>>a[x][y];
    f(0,0);
    cout<<z;
	return 0;
}
2024/10/20 10:16
加载中...