995

P11228 [CSP-J 2024] 地图探险

love_shuo_lsaac @ 2024-11-08 21:16:55

#include <bits/stdc++.h>
using namespace std;
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int vis[1005] [1005];
char a[1005] [1005];
int main() {
    int t,n,m,k,d,x,y,nx,ny,cnt;
    cin>>t;
    while(t--) {
        cnt=1;
        cin>>n>>m>>k;
        cin>>x>>y>>d;
        for(int i=1;i<=n;i++) {
            for(int j=1;j<=m;j++) {
                cin>>a[i][j];
                vis[i][j]=0;
            }
        }
        vis[x][y]=1;
        for(int i=1;i<=k;i++) {
            x+=dx[d];
            y+=dy[d];
            if(x<=n && y<=m && a[x][y]=='.' && x>0 && y>0){
                if(vis[x][y]==0) {
                    cnt++;
                    vis[x][y]=1;}
                else {
                    x-=dx[d];
                    y-=dy[d];
                }
            }
            else {
                x-=dx[d];
                y-=dy[d];
                d=(d+1)%4;
            }
        }
        cout<<cnt<<endl;
    }

}

50pts,995


by MasonXu @ 2024-11-08 21:35:42

删掉if(vis[x][y]==0) { cnt++; vis[x][y]=1;}下面的 else { x-=dx[d]; y-=dy[d]; }


by love_shuo_lsaac @ 2024-11-08 21:49:32

@MasonXu tks


by Are_you_sure_yxy @ 2024-11-08 23:22:50

求关


#include<bits/stdc++.h>
using namespace std;
char M[1005][1005];
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int vis[1005][1005];
int main()
{
    int T,n,m,cnt,k,x,y,d,ny,nx;
    cin>>T;
    while(T--){
        cin>>n>>m>>k;
        cin>>x>>y>>d;
        cnt=1;
        for(int i=0;i<1005;i++)
            for(int j=0;j<1005;j++)
                M[i][j]='x',vis[i][j]=0;
        cnt=1;
        vis[x][y]=1;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++){
                cin>>M[i][j];
            }
        while(k--){
            nx=x+dx[d],ny=y+dy[d];
            if(M[nx][ny]=='x'){d=(d+1)%4;continue;}
            x=nx,y=ny;
            if(!vis[x][y]) vis[x][y]=1,cnt++;
        }
        cout<<cnt<<endl;
    }
    return 0;
}

|