麻烦大佬帮忙看看哪里有问题,10分
查看原帖
麻烦大佬帮忙看看哪里有问题,10分
324176
yuyuyuyu12345楼主2023/5/17 14:53
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int b[510][510];
int x, y, r, z;
int a[505][505], k = 1;
void xuanzhuan1()//顺时针
{
	
	int h = x - 1, l = y + 1;//2*r+1阶矩阵的头坐标
	int q = 2*r + 1;//头坐标的总行数
	for (int k = 1; k <= q/2;++k) {
			int i = h;
			for (int j = i; j <= l; j++) //从左到右 
				b[j][l] = a[i][j];
			for (int j = i; j <= l; j++)//从上到下
				b[l][l - j+i ] = a[j][l];
			for (int j = l; j >= i; j--)//从右到左
				b[j][i] = a[l][j];
			for (int j = l; j >= i; j--)//从下到上
				b[i][l - j+i ] = a[j][i];
			h = h - 1;
			l=l + 1;
	}
}
void xuanzhuan2()	//逆时针
{
	int h = x - 1, l = y + 1;//2*r+1阶矩阵的头坐标
	int q = 2 * r + 1;//头坐标的总行数
		
		for (int k = 1; k <= q/2; ++k)
		{
			int i = h;
			for (int j = i; j <= l ; j++) //从左到右 j:1 2 3
				b[l - j + i][i] = a[i][j];
			for (int j = i; j <= l ; j++)//从上到下 j:1 2 3
				b[i][j] = a[j][l];	//l
			for (int j = l ; j >= i; j--)//从右到左 j:3 2 1
				b[l - j + i][l] = a[l][j];
			for (int j = l; j >= i; j--)//从下到上 j:3 2 1 
			{
				b[l][j] = a[j][i];
			}
			h=h - 1;
			l=l + 1;
		}
		
}
int main()
{
	int n, m;
	cin >> n >> m;

	for (int i = 1; i <= n; i++)//数组放进去
	{
		for (int j = 1; j <= n; j++)
		{
			a[i][j] = k;
			b[i][j]=k;
			k++;
		}
	}
	//for (int i = 1; i <= n; i++)//数组放进去
	//{
	//	for (int j = 1; j <= n; j++)
	//	{
	//		cout << a[i][j] << '\t' ;
	//	}
	//	cout << endl;
	//}

	for (int i = 0; i < m; i++)
	{
		cin >> x >> y >> r >> z;
		if (z == 0)//顺时针
			xuanzhuan1();
		
		else if (z == 1)
			xuanzhuan2();
		
		for (int i = 1; i <= n; i++)//数组放进去
		{
			for (int j = 1; j <= n; j++)
			{
				a[i][j] = b[i][j];
			}
		}
	}
	for (int i = 1; i <= n; i++)//数组放进去
	{
		for (int j = 1; j <= n; j++)
		{
			cout << b[i][j] << ' ';
		}
		cout << endl;
	}
}
2023/5/17 14:53
加载中...