10pts求调,样例过了(已注释)
查看原帖
10pts求调,样例过了(已注释)
1141675
_liu114514_楼主2024/8/31 09:16
#include<bits/stdc++.h>
using namespace std;
int t=1,n,m,x,y,r,z;//如题意 
int a[514][514],ff[514][514];//a:原始数组,ff:临时数组 
void turn(int tx,int ty,int bj,int dir){//逆时针转 
	int f;
	if(dir)f=1;
	else f=3;//如果是顺时针,就逆时针转3次 
	for(int k=1;k<=f;k++){
		for(int i1=tx+bj,i2=ty-bj;i1>=ty-bj&&i2<=ty+bj;i1--,i2++){
			for(int j=tx-bj;j<=tx+bj;j++){
				ff[i1][j]=a[j][i2];
			}
		}
		//for(int i=ty-bj;i<=ty+bj;i++){
		//	for(int j=tx-bj;j<=tx+bj;j++){
		//		cout<<f[i][j]<<" ";
		//	}
		//	cout<<endl;
		//}
		for(int i=tx-bj;i<=tx+bj;i++){
			for(int j=ty-bj;j<=ty+bj;j++){
				a[i][j]=ff[i][j];
			}
		}
	}
	return;
}
int main(){
	cin>>n; 
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			a[i][j]=t;//把1~n^2输入数组 
			t++;
		}
	}
	cin>>m;
	while(m--){
		cin>>x>>y>>r>>z;
		turn(x,y,r,z);
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
/*
5 4
2 2 1 0
3 3 1 1
4 4 1 0
3 3 2 1
*/
}
2024/8/31 09:16
加载中...