有大佬能看看我 40 分 代码哪出问题了吗
查看原帖
有大佬能看看我 40 分 代码哪出问题了吗
1001535
封禁用户楼主2024/10/26 20:27
#include <bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n, m, k;
int x, y, d;
char mp[1001][1001];
int flag[1001][1001];
int ans;
signed main() {
	cin >> t;
	while (t--) {
		memset(flag,0,sizeof flag);
		ans = 0;
		cin >> n >> m >> k;
		cin >> x >> y >> d;
		int nowx = x, nowy = y;
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= m; j++) {
				cin >> mp[i][j];
			}
		}
		while (k > 0) {
			if (d == 0) {
				k--;
				nowx = nowx, nowy = nowy + 1;
				if (nowx > n || nowy < 1 || nowx < 1 || nowy > m) {
					d = (d + 1) % 4;
					nowy = nowy - 1;
			//		continue;
				}
				if (mp[nowx][nowy] == '.' && d == 0 && flag[nowx][nowy] == 0) {
					ans++;
					flag[nowx][nowy] = 1;
				}
				if (mp[nowx][nowy] == 'x' && d == 0) {
					d = (d + 1) % 4;
					nowy = nowy - 1;
				}
			}
			if (d == 1) {
				k--;
				nowx = nowx + 1, nowy = nowy;
				if (nowx > n || nowy < 1 || nowx < 1 || nowy > m) {
					d = (d + 1) % 4;
					nowx = nowx - 1;
				//	continue;
				}
				if (mp[nowx][nowy] == '.' && d == 1 && flag[nowx][nowy] == 0) {
					ans++;
					flag[nowx][nowy] = 1;
				}
				if (mp[nowx][nowy] == 'x' && d == 1) {
					d = (d + 1) % 4;
					nowx = nowx - 1;
				}
			}
			if (d == 2) {
				k--;
				nowx = nowx, nowy = nowy - 1;
				if (nowx > n || nowy < 1 || nowx < 1 || nowy > m) {
					d = (d + 1) % 4;
					nowy = nowy + 1;
				//	continue;
				}
				if (mp[nowx][nowy] == '.' && d == 2 && flag[nowx][nowy] == 0) {
					ans++;
					flag[nowx][nowy] = 1;
				}
				if (mp[nowx][nowy] == 'x' && d == 2) {
					d = (d + 1) % 4;
					nowy = nowy + 1;
				}
			}
				if (d == 3) {
					k--;
					nowx = nowx - 1, nowy = nowy;
					if (nowx > n || nowy < 1 || nowx < 1 || nowy > m) {
						d = (d + 1) % 4;
						nowx = nowx + 1;
					//	continue;
					}
					if (mp[nowx][nowy] == '.' && d == 3 && flag[nowx][nowy] == 0) {
						ans++;
						flag[nowx][nowy] = 1;
					}
					if (mp[nowx][nowy] == 'x' && d == 3) {
					//	k--;
						d = (d + 1) % 4;
						nowx = nowx + 1;
					}
				}
		}
		if(1 <= x && x <= n && 1 <= y && y <= m) ans++;
		cout << ans << endl;
	}
	return 0;
}
2024/10/26 20:27
加载中...