社区讨论

玄关求条

P11228[CSP-J 2024] 地图探险参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhjdaez4
此快照首次捕获于
2025/11/04 00:41
4 个月前
此快照最后确认于
2025/11/04 00:41
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int t;
struct zuobiao{
    int x;
    int y;
    int d;
};
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>t;
        //input
    while(t--){
        zuobiao qwe;
        char a[10000][10000];
        int n,m,k;
        cin>>n>>m>>k;
        cin>>qwe.x>>qwe.y>>qwe.d;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cin>>a[i][j];
            }
        }
        int ans=1;
        while(k--){
            if(qwe.d==0){
                if(a[qwe.x+1][qwe.y]=='.'||a[qwe.x+1][qwe.y]=='#'){
                    qwe.x++;
                    if(a[qwe.x][qwe.y]=='.'){
                        ans++;
                        a[qwe.x][qwe.y]='#';
                    }
                }else{
                    qwe.d++;
                }
            }
            
            if(qwe.d==1){
                if(a[qwe.x][qwe.y+1]=='.'||a[qwe.x][qwe.y+1]=='#'){
                    qwe.y++;
                    if(a[qwe.x][qwe.y]=='.'){
                        ans++;
                        a[qwe.x][qwe.y]='#';
                    }
                }else{
                    qwe.d++;
                }

            }
            
            if(qwe.d==2){
                if(a[qwe.x-1][qwe.y]=='.'||a[qwe.x-1][qwe.y]=='#'){
                    qwe.x--;
                    if(a[qwe.x][qwe.y]=='.'){
                        ans++;
                        a[qwe.x][qwe.y]='#';
                    }
                }else{
                    qwe.d++;
                }

            }
            
            if(qwe.d==3){
                if(a[qwe.x][qwe.y-1]=='.'||a[qwe.x][qwe.y-1]=='#'){
                    qwe.y--;
                    if(a[qwe.x][qwe.y]=='.'){
                        ans++;
                        a[qwe.x][qwe.y]='#';
                    }
                }else{
                    qwe.d=0;
                }
            }
        }
        cout<<ans<<endl;
    }
}
思路就是按照题目的要求单步模拟,就是一步一步做,在那个while循环里面模拟 但是错得很离谱

回复

1 条回复,欢迎继续交流。

正在加载回复...