求助!只通过最后一个测试点
查看原帖
求助!只通过最后一个测试点
1257833
RiGuang楼主2024/12/31 16:31

样例过了,最后一个测试点过了,其他都WA

#include<bits/stdc++.h>
using namespace std;
#define int long long

int n,m,arr[501][501];
void init(){
	int c=1;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	arr[j][i]=c++;
}
void rvs(int cx,int cy,int r,int z){
	int q[501][501];
	for(int y=-r;y<=r;y++){
		for(int x=-r;x<=r;x++){
			int k=z?1:-1;
			int tox=cx+y*k,toy=cy+x*(-k),nowx=cx+x,nowy=cy+y;
			
			q[tox][toy]=arr[nowx][nowy];//将目标位置存在副本里
		}
	}
	
	for(int y=-r;y<=r;y++){
		for(int x=-r;x<=r;x++){
			int nowx=cx+x,nowy=cy+y;
			arr[nowx][nowy]=q[nowx][nowy];//将副本中的元素加入到结果数组
			
		}
	}
}
void p(){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<arr[j][i]<<" ";
		}
		cout<<endl;
	}
}

signed main(){
	cin>>n>>m;
	init();//创建1-n^2初始数组
	for(int i=0;i<m;i++){
		int x,y,r,z;
		cin>>x>>y>>r>>z;
		rvs(x,y,r,z);//以(x,y)为中心旋转
	}
	p();//打印处理后数组
	
	return 0;
}
2024/12/31 16:31
加载中...