CSP-J 2024 第二轮的第二题地图探险,求调!
洛谷题目链接:https://www.luogu.com.cn/problem/P11228
样例1的测试数据2输出了15(详见下文),求调!洛谷上交只有30分。个人感觉是输入的问题吧。
#include <bits/stdc++.h>
using namespace std;
int n, m, k, x, y, d, ans, x2, y2, T;
char ch;//string ss;
bool a[1005][1005];
void input() {
//cout << "dddd" << endl;
getchar();
scanf("%d%d%d%d%d%d", &n, &m, &k, &x, &y, &d);
//cout << "eeee" << endl;
for (int j = 1; j <= n; j++) {
//scanf("%s", ss);
for (int l = 1; l <= m; l++) {
scanf("%c", &ch);
a[j][l] = (ch == 'x');
}
getchar();
}
}
void get_xy2() {
if(d == 0) {
x2 = x;
y2 = y + 1;
}
else if(d == 1) {
x2 = x + 1;
y2 = y;
}
else if(d == 2) {
x2 = x;
y2 = y - 1;
}
else if(d == 3) {
x2 = x - 1;
y2 = y;
}
}
void inspect_move() {
if(1 <= x2 && x2 <= n && 1 <= y2 && y2 <= m && (!a[x2][y2])) {
x = x2;
y = y2;
ans ++;
}
else {
d = (d + 1) % 4;
}
}
void one_test() {
input();
ans = 1;
for (int j = 1; j <= k; j++) {
get_xy2();
inspect_move();
}
printf("%d\n", ans);
}
int main() {
scanf("%d", &T);
for (int i = 1; i <= T; i++) {
one_test();
}
return 0;
}
其中,样例1的输入输出是:
2
1 5 4
1 1 2
....x
3
5 5 20
1 1 0
.....
.xxx.
.x.x.
..xx.
x....
15