1 条题解

  • 0
    @ 2024-12-4 17:37:01

    按照题意模拟即可。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e3+5;
    char mp[N][N];
    bool vis[N][N];
    int main() {
        //freopen("explore.in","r",stdin);
        //freopen("explore.out","w",stdout);
     
        int T;
        cin>>T;
        while(T--) {
            memset(mp,0,sizeof(mp));
            memset(vis,0,sizeof(vis));
     
            int n,m,k,x,y,d;
            cin>>n>>m>>k>>x>>y>>d;
            for(int i=1;i<=n;i++) {
                for(int j=1;j<=m;j++) {
                    cin>>mp[i][j];
                }
            }
            vis[x][y]=true;
     
            while(k--) {
                int nx,ny;
                if(d==0) {
                    nx=x,ny=y+1;
                }
                else if(d==1) {
                    nx=x+1,ny=y;
                }
                else if(d==2) {
                    nx=x,ny=y-1;
                }
                else if(d==3) {
                    nx=x-1,ny=y;
                }
                if(nx<1||nx>n||ny<1||ny>m||mp[nx][ny]=='x') {
                    d=(d+1)%4;
                }
                else {
                    vis[nx][ny]=true;
                    x=nx,y=ny;
                }
            }
     
            long long ans=0;
            for(int i=1;i<=n;i++) {
                for(int j=1;j<=m;j++) {
                    if(vis[i][j]) {
                        ans++;
                    }
                }
            }
     
            cout<<ans<<endl;
        }
     
    	return 0;
    }
    
    • 1

    信息

    ID
    35106
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    3
    已通过
    3
    上传者