求求,x,y没搞反但是只有第十个过了
查看原帖
求求,x,y没搞反但是只有第十个过了
872584
zzx2022119楼主2023/5/18 21:29
#include <stdio.h>

int main()
{
	int n = 0, m = 0;
	int num[510][510] = { 0 };
	int f[510][510] = { 0 };
	scanf("%d %d", &n, &m);
	int i = 0, j = 0, k = 0;
	int a = 0, b = 0;
	int count = 1;
	int x = 0, y = 0, r = 0, z = 0;
	//初始数组
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			num[i][j] = count;
			f[i][j] = count;
			count++;
		}
	}

	//操作
	for (k = 0; k < m; k++)
	{
		scanf("%d %d %d %d", &y, &x, &r, &z);
		x -= r;
		y -= r;
		r = 2 * r + 1;
		if (z==0)
		{
			for (a = x - 1 ,i=x-2+r; a < x - 1 + r; a++,i--)
			{
				for (b = y - 1; b < y - 1 + r; b++)
				{
					f[b][i] = num[a][b];
				}
			}
		}
		else
		{
			for (a = x - 1; a < x - 1 + r; a++)
			{
				for (b = y - 1,j=y-2+r; b < y - 1 + r; b++,j--)
				{
					f[j][a] = num[a][b];
				}
			}
		}
		for (a = x - 1; a < x - 1 + r; a++)
		{
			for (b = y - 1; b < y - 1 + r; b++)
			{
				num[a][b] = f[a][b];
			}
		}
	}

	//打印数组
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			printf("%d", num[i][j]);
			if (j < n - 1)
			{
				printf(" ");
			}
		}
		printf("\n");
	}
}
2023/5/18 21:29
加载中...