社区讨论
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 条回复,欢迎继续交流。
正在加载回复...