50分求助
查看原帖
50分求助
981005
KipperLee楼主2023/6/20 19:46
#include <iostream>
using namespace std;

int a[5005][5005];
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};

int main()
{
	int n, x, y;
	cin >> n >> x >> y;
	
	for (int i = 1; i <= n; i++)
	{
		a[1][i] = i;
	}
	
	int dir = 0, cur = n + 1, curx = 1, cury = 1;
	
	for (int i = n - 1; i >= 1; i--)
	{
		for (int j = 0; j < 2; j++)
		{
			for (int k = 0; k < i; k++)
			{
				cur++;
				curx += dx[dir];
				cury += dy[dir];
				a[curx][cury] = cur;
			}
			
			dir++;
			dir %= 4;
		}
	}
	
	for (int i = 2; i <= n; i++)
	{
		for (int j = 1; j <= n / 2; j++)
		{
			swap(a[i][j], a[i][n - j + 1]);
		}
	}
	
	if (x == 1)
	{
		cout << a[x][y];
	}
	else
	{
		cout << a[x][y] - 1;
	}
	
	return 0;
}
2023/6/20 19:46
加载中...