求助,样例能过但全WA,一点能调的思路都没有
查看原帖
求助,样例能过但全WA,一点能调的思路都没有
1163878
AsterXYZ楼主2024/4/16 20:37

RT 代码如下

#include<bits/stdc++.h>
#define endl "\n"
#define cint const int
#define ln length()
#define res register
#define short int
using namespace std;
cint N=505;
unsigned short maho[N][N];//当前魔法阵 
unsigned short predict[N];//储存用于更换的数字 
int n,m,x,y,z,r;
void clear(){
	fill(predict,predict+(2*r+1)*(2*r+1),0); 
}
void spinz_1(){//逆时针旋转
	unsigned short p=1;//标记predict序号 
	for(int i=x-r;i<=x+r;i++){
		for(int j=y-r;j<=y+r;j++){
			predict[p]=maho[i][j];
//			cout<<predict[p]<<" ";
			p++;
		}
//		cout<<endl;
	}
//	cout<<endl;
	p=1;
	for(int i=x-r;i<=x+r;i++){
		for(int j=y+r;j>=y-r;j--){
			maho[j][i]=predict[p];
			p++;
		}
	}
//	cout<<endl;
//	for(int i=1;i<=n;i++){
//		for(int j=1;j<=n;j++)
//			cout<<maho[i][j]<<" ";
//		cout<<endl;
//	}
}
void spinz_0(){//顺时针 
	for(int i=1;i<=3;i++)
		spinz_1();//转换三次 
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	short k=1;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++){
			maho[i][j]=k;
			k++;
		} 
	for(int i=1;i<=m;i++){
		clear();
		cin>>x>>y>>r>>z;
		if(z==1)
			spinz_1();
		else spinz_0();
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
			cout<<maho[i][j]<<" ";
		cout<<endl;
	}
	return 0;
}
2024/4/16 20:37
加载中...