40分求调

P11228 [CSP-J 2024] 地图探险

Tgdoem @ 2024-11-19 21:05:16

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
bool v[N][N];
bool w[N][N];
int way[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
bool OK(int x,int y,int n,int m){
    if(x<1)return false;
    if(x>n)return false;
    if(y<1)return false;
    if(y>m)return false;
    return v[x][y];
}
int main(){
    int t;
    cin>>t;
    int qwq=0;
    while(t--){
        memset(w,false,sizeof(w));
        int n,m,k;
        cin>>n>>m>>k;
        int x,y,d;
        cin>>x>>y>>d;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                char a;
                cin>>a;
                if(a=='.')v[i][j]=true;
            }
        }
        w[x][y]=true;
        int s=1;
        while(k--){
            int nx=x+way[d][0],ny=y+way[d][1];
            if(OK(nx,ny,n,m)){
                x=nx;
                y=ny;
                if(!w[x][y])s++;
                w[x][y]=true;
            }else{
                d=(d+1)%4;
            }
        }
        cout<<s<<"\n";
    }
    return 0;
}

by schlutz @ 2024-11-21 18:35:20

直接暴力深搜就行(我考场上就这么做的100分)

广搜没试过


|