求助大佬,只有第10个过了
查看原帖
求助大佬,只有第10个过了
240709
woshishuilaizhe楼主2023/9/10 21:54
//P4924 [1007] 魔法少女小Scarlet 
#include<iostream>
using namespace std;
int main()
{
	int n, m, x, y, r, z;
	cin >> n >> m;
	int fz[n+1][n+1], fz2[n+1][n+1];
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=n; j++)
		{
			fz[i][j] = (i-1)*n+j;
			fz2[i][j] = (i-1)*n+j;
		}
	}
	for(int i=1; i<=m; i++)
	{
		cin >> x >> y >> r >> z;
		if(z == 0)
		{
			for(int j=1; j<=2*r+1; j++)
			{
				for(int k=1; k<=2*r+1; k++)
				{
					fz2[k+y-1-r][r+1-j+x] = fz[j+x-1-r][k+y-1-r];
				}
			}
		}
		if(z == 1)
		{
			for(int j=1; j<=2*r+1; j++)
			{
				for(int k=1; k<=2*r+1; k++)
				{
					fz2[r+1-k+y][j+x-1-r] = fz[j+x-1-r][k+y-1-r];
				}
			}
		}
		for(int j=1; j<=n; j++)
		{
			for(int k=1; k<=n; k++)
			{
				fz[j][k] = fz2[j][k];
			}
		}
	}
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=n; j++)
		{
			cout << fz[i][j] << " ";
		}
		cout << endl;
	}
}
//顺 
//原 
//逆 
//3*3 
//13,23,33,12,22,32,11,21,31,(y  ,4-x)
//11,12,13,21,22,23,31,32,33,(x  ,y  )
//31,21,11,32,22,12,33,23,13,(4-y,x  )
//5*5 
//15,25,35,45,55,14,24,34,44,54,13,23,33,43,53,12,22,32,42,52,11,21,31,41,51,(y  ,6-x)
//11,12,13,14,15,21,22,23,24,25,31,32,33,34,35,41,42,43,44,45,51,52,53,54,55,(x  ,y  )
//51,41,31,21,11,52,42,32,22,12,53,43,33,23,13,54,44,34,24,14,55,45,35,25,15,(6-y,x  )
//n*n
//(1,n),(2,  n),(3  ,n)......(n-2,1  ),(n-1,1  ),(n,1),(y    ,n+1-x)
//(1,1),(1,  2),(1  ,3)......(n  ,n-2),(n  ,n-1),(n,n),(x    ,y    )
//(n,1),(n-1,1),(n-2,1)......(3  ,n  ),(2  ,n  ),(1,n),(n+1-y,x    )								  1                                
//11,12,13,14,15
//21,22,23,24,25
//31,32,33,34,35
//41,42,43,44,45
//51,52,53,54,55
2023/9/10 21:54
加载中...