1 条题解

  • 1
    @ 2023-6-27 11:57:13

    按他说的做即可。

    #include <bits/stdc++.h>
    using namespace std;
    int r,c,x=1,y=1,ans;
    int a[45][45];
    const int dx[]={0,1,0,-1};
    const int dy[]={1,0,-1,0};
    int main(){
        cin>>r>>c;
        for (int i=1;i<=r;i++){
            for (int j=1;j<=c;j++){
                cin>>a[i][j];
            }
        }
        while (x<r||y<c){//类似深搜
            ans+=a[x][y];
            a[x][y]=0;
            int Nx,Ny,Max=-1;
            for (int i=0;i<4;i++){
                int nx=x+dx[i];
                int ny=y+dy[i];
                if (nx<1||nx>r||ny<1||ny>c){
                    continue;
                }
                if (a[nx][ny]>Max){//确定最终方向
                    Max=a[nx][ny];
                    Nx=nx;
                    Ny=ny;
                }
            }
            x=Nx,y=Ny;//移动
        }
        cout<<ans+a[r][c];//最后一格没有统计,需要加上
        return 0;
    }
    
    • 1

    信息

    ID
    1038
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    25
    已通过
    19
    上传者