50分求调

P11228 [CSP-J 2024] 地图探险

15282112522hhg @ 2024-11-17 10:19:08


#include<bits/stdc++.h>
using namespace std;
int n,c,ku,k,x,y,fx,gz=1;
char dt[1005][100
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>c>>ku>>k;
        cin>>x>>y>>fx;
        for(int s=1;s<=c;s++)
        {
            for(int j=1;j<=ku;j++)
            {
                cin>>dt[s][j];
            }
        }
        while(k)
        {
            if(fx==0)
            {
                if(dt[x][y+1]!='x' and y+1<=ku)
                {
                    if(dt[x][y+1]=='.')
                    {
                    dt[x][y]='1';
                    y=y+1;
                    gz++;
                    k--;
                    if(k==0)
                    {
                        break;
                    }

                    }
                    else
                    {
                        y=y+1;
                        k--;
                        if(k==0)
                    {
                        break;
                    }
                    }
                }
                else
                {
                    fx=(fx+1)%4;
                    k--;
                    if(k==0)
                    {
                        break;
                    }
                }
            }
            if(fx==1)
            {
                if(dt[x+1][y]!='x' and x+1<=c)
                {
                    if(dt[x+1][y]=='.')
                    {
                    dt[x][y]='1';
                    x=x+1;
                    gz++;
                    k--;
                    if(k==0)
                    {
                        break;
                    }
                    }
                    else
                    {
                        x=x+1;

                        k--;
                        if(k==0)
                    {
                        break;
                    }
                    }
                }
                else
                {
                    fx=(fx+1)%4;
                    k--;
                    if(k==0)
                    {
                        break;
                    }
                }
            }
            if(fx==2)
            {
                if(dt[x][y-1]!='x' and y-1>0)
                {
                    if(dt[x][y-1]=='.')
                    {
                    dt[x][y]='1';
                    y=y-1;
                    gz++;
                    k--;
                    if(k==0)
                    {
                        break;
                    }
                    }
                    else
                    {
                        y=y-1;
                        k--;
                        if(k==0)
                    {
                        break;
                    }
                    }
                }
                else
                {
                    fx=(fx+1)%4;
                    k--;
                    if(k==0)
                    {
                        break;
                    }
                }
            }
            if(fx==3)
            {
                if(dt[x-1][y]!='x' and x-1>0)
                {
                    if(dt[x-1][y]=='.')
                    {
                    dt[x][y]='1';
                    x=x-1;
                    gz++;
                    k--;
                    if(k==0)
                    {
                        break;
                    }

                    }
                    else
                    {
                        x=x-1;
                        k--;
                        if(k==0)
                    {
                        break;
                    }
                    }
                }
                else
                {
                    fx=(fx+1)%4;
                    k--;
                    if(k==0)
                    {
                        break;
                    }
                }
            }
        }
        cout<<gz<<endl;
        gz=1;
    }
    return 0; 
}

|