模拟求调

P11228 [CSP-J 2024] 地图探险

XQ0014 @ 2024-10-28 21:54:49

用模拟的思路,但不知道问题是什么

#include<bits/stdc++.h>
using namespace std;
int mg[1009][1009];
int main(){
    int t; 
    cin>>t;
    for(int cs=1;cs<=t;cs++)
    {
        int x,y,d,m,n,k,ans=0;
        cin>>n>>m>>k>>x>>y>>d;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                char a;
                cin>>a;
                if(a=='.') mg[i][j]=1;
                else mg[i][j]=0;
            }
        for(int i=1;i<=k;)
        {
            if(d==0){
                i++,mg[x][y]=2;
                if(mg[x][y+1]!=0) y++;
                else d=(d+1)%4;
            }
            if(d==1){
                i++,mg[x][y]=2;
                if(mg[x+1][y]!=0) x++;
                else d=(d+1)%4;
            }
            if(d==2){
                i++,mg[x][y]=2;
                if(mg[x][y-1]!=0) y--;
                else d=(d+1)%4;
            }
            if(d==3){
                i++,mg[x][y]=2;
                if(mg[x-1][y]!=0) x--;
                else d=(d+1)%4;
            }
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                if(mg[i][j]==2) ans++;
                mg[i][j]=0;
            } 
        cout<<ans<<endl;
    }   
    return 0;
}

by bidongqu @ 2024-10-29 13:07:25

走过的地方还能走,把所有if(mg[ ][ ]!=0) x--改为if(mg[ ][ ]==1) x--


by XQ0014 @ 2024-11-03 15:23:58

@bidongqu 谢谢


|