社区讨论

60分求助

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mdszmnri
此快照首次捕获于
2025/08/01 23:37
7 个月前
此快照最后确认于
2025/11/04 03:20
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int t,ans = 0; 
int cnt;
void dfs(int x0,int y0,int d0,int n,int m,char a[1005][1005],int k,bool f[1005][1005]){
	if(cnt == k){
		return;
	}
    int x = x0,y = y0;
    int xx = x,yy = y;
    if(d0 == 0) ++y;
    if(d0 == 1) ++x;
    if(d0 == 2) --y;
    if(d0 == 3) --x;
    if(x >= 1 && x <= n && y >= 1 && y <= m && a[x][y] == '.'){
        f[x][y] = 1;
        //cout << x << " " << y << endl; 
        cnt++;
        dfs(x,y,d0,n,m,a,k,f);
    }else{
		d0 = (d0+1)%4;
		f[xx][yy] = 1;
		//cout << xx << " " << yy << endl; 
		cnt++;
		dfs(xx,yy,d0,n,m,a,k,f);
	} 
}

int main(){
    cin >> t;
    for(int i = 1;i <= t;i++){
        int n,m,k;
        int x0,y0,d0;
        char a[1005][1005];
        bool f[1005][1005];
        for(int j = 1;j <= n;j++){
            for(int k = 1;k <= m;k++){
                f[j][k] = 0;
            }
        }
        cin >> n >> m >> k;
        cin >> x0 >> y0 >> d0;
        int p = x0,q = y0;
        for(int j = 1;j <= n;j++){
            for(int k = 1;k <= m;k++){
                cin >> a[j][k];
            }
        }
        f[x0][y0] = 1;
        dfs(x0,y0,d0,n,m,a,k,f);
        for(int j = 1;j <= n;j++){
            for(int k = 1;k <= m;k++){
                if(f[j][k] == 1){
                    ans++;
                }
            }
        }
        cout << ans << endl;
        ans = 0;
        cnt = 0;
    }
    return 0;
}

回复

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

正在加载回复...