社区讨论
和题解思路一样,但是不知道为什么50pts
P11228[CSP-J 2024] 地图探险参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @m2qu60mo
- 此快照首次捕获于
- 2024/10/27 08:12 去年
- 此快照最后确认于
- 2025/11/04 15:57 4 个月前
大概用的就是普通的模拟,nm数组记录森林,z代表走过了,然后xx,yy是xy值,一直在变d就是方向,求大佬调一下
CPP#include<bits/stdc++.h>
using namespace std;
const int Maxn = 1e3+5;
int T,n,m,k;
int xx,yy,d;
char nm[Maxn][Maxn];
int main()
{
cin >> T;
for (int i = 1;i <= T;i++){
int sum = 1;
cin >> n >> m >> k;
cin >> xx >> yy >> d;
nm[xx][yy] = 'z';
for (int j = 1;j <= n;j++){
for (int k = 1;k <= m;k++){
cin >> nm[j][k];
}
}
for (int l = 1;l <= k;l++){
if (d == 0){
if (yy+1 <= m && nm[xx][yy+1] != 'x'){
if (nm[xx][yy+1] != 'z'){
sum++;
nm[xx][yy+1] = 'z';
}
yy+=1;
}
else d = (d+1) % 4;
}
else if (d == 1){
if (xx+1 <= n && nm[xx+1][yy] != 'x'){
if (nm[xx+1][yy] != 'z'){
sum++;
nm[xx+1][yy] = 'z';
}
xx+=1;
}
else d = (d+1) % 4;
}
else if (d == 2){
if (yy-1 > 0 && nm[xx][yy-1] != 'x'){
if (nm[xx][yy-1] != 'z'){
sum++;
nm[xx][yy-1] = 'z';
}
yy-=1;
}
else d = (d+1) % 4;
}
else if (d == 3){
if(xx-1 > 0 && nm[xx-1][yy] != 'x'){
if (nm[xx-1][yy] != 'z'){
sum++;
nm[xx-1][yy] = 'z';
}
xx-=1;
}
else d = (d+1) % 4;
}
}
cout << sum << endl;
}
return 0;
}
注:文件读入和写入我删了,赛时写了()
回复
共 4 条回复,欢迎继续交流。
正在加载回复...