#1~#9 WA #10 TLE求助
查看原帖
#1~#9 WA #10 TLE求助
732426
zhanghy123楼主2023/4/5 09:28

自测样例可过,代码有点小乱

#include<bits/stdc++.h>
using namespace std;
int n,m,a[999][999],k=1,x,y,r,z;
int t[999][999];
void turn(int m[999][999])//顺时针 
{
	int stx=x-r,sty=y-r;
	int edx=x+r,edy=y+r,ans;//范围内起始坐标与终止坐标 
	for(int i=stx; i<=edx; i++)
	{
		for(int j=sty; j<=edy; j++){
			int cnt=i-stx+1;
			ans=edx-cnt+1;
			a[j][ans]=t[i][j];
		}
	}
}
void be()//旋转后数组覆盖原数组 
{
	for(int i=1; i<=n; i++){
		 for(int j=1; j<=n; j++){
		 	t[i][j]=a[i][j];
		 }
	}
}
void nturn(int m[999][999])//逆时针 
{
	for(int i=0; i<3; i++){
		turn(a);
		be();
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1; i<=n; i++)
		for(int j=1; j<=n; j++)
			a[i][j]=k++;
	for(int i=1; i<=m; i++)
	{
		cin>>x>>y>>r>>z;
		int	t=x;
		x=y;
		y=t;	//将x列y行 转为x行y列 
		be();
		if(z==0)
			turn(a);
		else if(z==1)
			nturn(a);
	
	}
	for(int i=1; i<=n; i++){
		for(int j=1; j<=n; j++)
			printf("%d ",a[i][j]);
		cout<<endl;
	}
	return 0;
}

2023/4/5 09:28
加载中...