社区讨论

50玄关求条

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

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@mhjde9bi
此快照首次捕获于
2025/11/04 00:44
4 个月前
此快照最后确认于
2025/11/04 00:44
4 个月前
查看原帖
代码应该算是简单易懂吧.....
CPP
#include<bits/stdc++.h>
using namespace std;
int mp[1005][1005];
int main() {
	int T;
	cin >> T;
	for (int i = 1; i <= T; i++) {
		int n, m, k, x, y, d;
		cin >> n >> m >> k >> x >> y >> d;
		char o;
		for (int j = 1; j <= n; j++) {
			for (int l = 1; l <= m; l++) {
				cin >> o;
				if (o == 'x') {
					mp[j][l] = 1;
				}
			}
		}
		int ans = 1;
		for (int j = 1; j <= k; j++) {
			/*for (int j = 1; j <= n; j++) {
				for (int l = 1; l <= m; l++) {
					cout << mp[i][j] << " ";
				}
				cout << endl;
			}*/
			switch (d) {
				case 0: {
					int xx = x;
					int yy = y + 1;
					if (mp[xx][yy] != 1 && 1 <= xx && xx <= n && 1 <= yy && yy <= m) {
						x = xx;
						y = yy;
						if (mp[x][y] == 0) {
							ans++;
							mp[x][y] = 2;
						}
					} else {
						d = (d + 1) % 4;
					}
					break;
				}
				case 1: {
					int xx = x + 1;
					int yy = y;
					if (mp[xx][yy] != 1 && 1 <= xx && xx <= n && 1 <= yy && yy <= m) {
						x = xx;
						y = yy;
						if (mp[x][y] == 0) {
							ans++;
							mp[x][y] = 2;
						}
					} else {
						d = (d + 1) % 4;
					}
					break;
				}
				case 2: {
					int xx = x;
					int yy = y - 1;
					if (mp[xx][yy] != 1 && 1 <= xx && xx <= n && 1 <= yy && yy <= m) {
						x = xx;
						y = yy;
						if (mp[x][y] == 0) {
							ans++;
							mp[x][y] = 2;
						}
					} else {
						d = (d + 1) % 4;
					}
					break;
				}
				case 3: {
					int xx = x - 1;
					int yy = y;
					if (mp[xx][yy] != 1 && 1 <= xx && xx <= n && 1 <= yy && yy <= m) {
						x = xx;
						y = yy;
						if (mp[x][y] == 0) {
							ans++;
							mp[x][y] = 2;
						}
					} else {
						d = (d + 1) % 4;
					}
					break;
				}
			}
		}
		cout << ans << endl;
		for (int j = 1; j <= n; j++) {
			for (int l = 1; l <= m; l++) {
				mp[j][l] = 0;
			}
		}
	}
	return 0;
}

飞机一坐,博莱恩特

回复

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

正在加载回复...