求助70分

P11228 [CSP-J 2024] 地图探险

wangmingrui123456 @ 2024-10-26 18:19:45

#include<bits/stdc++.h>
using namespace std;
int t,maps[1500][1500],x,y,d,n,m,k;
char a;
int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%d%d%d%d%d%d",&n,&m,&k,&x,&y,&d);
        for(int i=1;i<=n;++i){
            for(int j=1;j<=m;++j){
                cin>>a;
                if(a=='.')maps[i][j]=-1;
                else maps[i][j]=0;
            }
        }
        maps[x][y]=1;
        for(int i=1;i<=k;++i){
            switch(d){
                case 0:{
                    if(!maps[x][y+1]){
                        d=(d+1)%4;
                        break;
                    }
                    ++y;
                    maps[x][y]=1;
                    break;
                }
                case 1:{
                    if(!maps[x+1][y]){
                        d=(d+1)%4;
                        break;
                    }
                    ++x;
                    maps[x][y]=1;
                    break;
                }
                case 2:{
                    if(!maps[x][y-1]){
                        d=(d+1)%4;
                        break;
                    }
                    --y;
                    maps[x][y]=1;
                    break;
                }
                case 3:{
                    if(!maps[x-1][y]){
                        d=(d+1)%4;
                        break;
                    }
                    --x;
                    maps[x][y]=1;
                    break;
                }
            }
        }
        int ans=0;
        for(int i=1;i<=n;++i){
            for(int j=1;j<=m;++j)if(maps[i][j]==1)++ans;
        }
        printf("%d\n",ans);
    }
    return 0;
}
//WA 7,8,10

by wangmingrui123456 @ 2024-10-26 18:22:56

已AC,需要memset maps数组


|