样例通过,求助大佬,10分
查看原帖
样例通过,求助大佬,10分
546830
XSean楼主2022/8/20 11:44
#include<bits/stdc++.h>
using namespace std;
int n,m;
int arr1[501][501]={};
int arr2[501][501]={};
struct move{
	int x,y;
	int r,z;
}mo[501];
void zhuan(int x1,int y1,int r1,int z1){
	if(z1){
		for(int i=x1-r1;i<=x1+r1;i++){
			for(int j=x1-r1;j<=x1+r1;j++){
				if(i==x1||j==y1){
					if(j==y1){
						arr1[i][j]=arr2[x1][y1-(i-x1)];
					}else if(i==x1){
						arr1[i][j]=arr2[x1+(j-y1)][y1];
					}
				}else{
					arr1[i][j]=arr2[x1+(j-y1)][y1-(i-x1)];
				}
			}
		}
	}else{
		for(int i=x1-r1;i<=x1+r1;i++){
			for(int j=x1-r1;j<=x1+r1;j++){
				if(i==x1||j==y1){
					if(j==y1){
						arr1[i][j]=arr2[x1][y1+(i-x1)];
					}else if(i==x1){
						arr1[i][j]=arr2[x1-(j-y1)][y1];
					}
				}else{
					arr1[i][j]=arr2[x1-(j-y1)][y1+(i-x1)];
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			arr2[i][j]=arr1[i][j];
		}
	}
}
int main(){
/*
freopen (".in","r",stdin);
freopen (".out","w",stdout);
*/
cin>>n>>m;
for(int i=1;i<=n;i++){
	for(int j=1;j<=n;j++){
		arr1[i][j]=(i-1)*n+j;
		arr2[i][j]=(i-1)*n+j;
	}
}
for(int i=1;i<=m;i++){
	cin>>mo[i].x>>mo[i].y>>mo[i].r>>mo[i].z;
	zhuan(mo[i].x,mo[i].y,mo[i].r,mo[i].z);
}
for(int i=1;i<=n;i++){
	for(int j=1;j<=n;j++){
		cout<<arr1[i][j]<<" ";
	}
	cout<<endl;
}
/*
fclose(stdin);
fclose(stdout);
*/
	return 0;
}

2022/8/20 11:44
加载中...