40求助

P11228 [CSP-J 2024] 地图探险

ykx1926 @ 2024-10-26 21:25:29

#include<bits/stdc++.h> 
using namespace std;
char a[1010][1010];
int t,n,m,k,x,y,d,b,cs;
int fx[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int main()
{
    cin>>t;
    for(int tt=0;tt<t;tt++){
        cin>>n>>m>>k>>x>>y>>d;

        for(int i=0;i<=n+1;i++){ 
            for(int j=0;j<=m+1;j++){
                if(i==0||i>n||j==0||j>m){
                    a[i][j]='x';
                    continue;
                }
                cin>>a[i][j];
            }
        }
        cs=0;
        a[x][y]='a';
        cs++;
        b=0;

        for(int i=1;i<=n;++i){
            for(int j=1;j<=m;j++){
                if(b==k) break;
                if(a[x+fx[d][0]][y+fx[d][1]]=='x'){
                    d=(d+1)%4;//转向 
                    b++;
                    continue;
                }
                if(a[x+fx[d][0]][y+fx[d][1]]=='.'){
                    a[x][y]='a';
                    x=x+fx[d][0];
                    y=y+fx[d][1];
                    cs++;
                    b++;
                    continue;
                }
                if(a[x+fx[d][0]][y+fx[d][1]]=='a'){
                    x=x+fx[d][0];
                    y=y+fx[d][1];
                    b++;
                    continue;
                }
            }
        }
        cout<<cs<<endl;
    }
    return 0;
}

|