60分WA!求调!

P11228 [CSP-J 2024] 地图探险

liuruihang2027 @ 2024-12-14 21:51:38

代码

#include <bits/stdc++.h>
using namespace std;
bool vis[1001][1001];
int t,turn1[4]={0,1,0,-1},turn2[4]={1,0,-1,0},x[7],y[7],d[7],n,m,k;//0 right,1 under,2 left,3 on
int main(){
    cin>>t;
    for (int l=1;l<=t;l++){
        int ans=1;
        memset (vis,0,sizeof vis);
        char a[1001][1001];
        cin>>n>>m>>k>>x[l]>>y[l]>>d[l];
        for (int i=1;i<=n;i++){
            for (int j=1;j<=m;j++){
                cin>>a[i][j];
            }
        }
        vis[x[l]][y[l]]=1;
        while (k>0){
            int xx=x[l]+turn1[d[l]],yy=y[l]+turn2[d[l]];
            if (a[xx][yy]=='.'){
                if (!vis[xx][yy])
                    ans++;vis[xx][yy]=1;
                x[l]=xx;y[l]=yy;    
            }else{
                d[l]=(d[l]+1)%4;
            }
            k--;
        }
        cout<<ans<<endl;
    }
    return 0;
}

by F1reFly @ 2024-12-14 21:54:58

加一下越界判断试一下,还不行的话就是思路错了,这题好像能走回头路的


by YiskyGame @ 2024-12-14 22:17:51

这题好像不需要vis


|