社区讨论

求调

灌水区参与者 2已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@m306xt3y
此快照首次捕获于
2024/11/02 21:20
去年
此快照最后确认于
2025/11/04 15:30
4 个月前
查看原帖

题目链接:https://www.luogu.com.cn/problem/P11228?contestId=209924

代码:
CPP
#include<iostream>
using namespace std;

int d = 0;
int x, y;
char map1[1000][1000];
int t, k;
int cnt = 1;
a
int dt(int x0, int y0, int d) {
	if (k == 0)
	{
		return cnt;
	}
	cout << x0 << " " << y0 << " " << d << endl;
	if (d == 0)
	{
		if (y0 + 1 > y || map1[x0][y0 + 1] == 'x') {
			k--;
			dt(x0, y0, (d + 1) % 4);

		}
		else {
			k--;
			cnt++;
			dt(x0, y0++, d);
			

		}
	}
	else if (d == 1)
	{

		if (x0 + 1 > x || map1[x0 + 1][y0] == 'x') {
			k--;
			dt(x0, y0, (d + 1) % 4);

		}
		else {
			k--;
			cnt++;
			dt(x0++, y0, d);
			

		}
	}
	else if (d == 2)
	{
		if (y0 - 1 < y || map1[x0][y0 - 1] == 'x') {
			k--;
			dt(x0, y0, (d + 1) % 4);

		}
		else {
			k--;
			cnt++;
			dt(x0, y0--, d);
			

		}
	}
	else
	{
		if (x0 - 1 < x || map1[x0 - 1][y0] == 'x') {
			k--;
			dt(x0, y0, (d + 1) % 4);

		}
		else {
			k--;
			cnt++;
			dt(x0--, y0, d);

			

		}
	}


}
int main()
{
	cin >> t;
	for (int i = 1; i <= t; i++) {
		int x0, y0;
		cin >> x >> y >> k >> x0 >> y0 >> d;
		for (int x1 = 0; x1 < x; x1++)
		{
			for (int y1 = 0; y1 < y; y1++)
			{
				cin >> map1[x1][y1];
			}
		}
		dt(x0, y0, d);
		cout << cnt << endl;
		cnt = 0;
	}
	return 0;
}

回复

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

正在加载回复...