社区讨论

和题解思路一样,但是不知道为什么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 条回复,欢迎继续交流。

正在加载回复...