兄弟们求助,只过了最后一个点!!!
查看原帖
兄弟们求助,只过了最后一个点!!!
93165
GK_PRC楼主2023/3/28 23:18

数组从上到下行值增大,从左到右列值增大,和坐标系正方向、横纵坐标表示的意义刚好反着。我是按数组行列值来的,感觉没问题。。。

#include<iostream>
using namespace std;

#define N 510

int n, m;//方阵大小 ,施法次数
int a[N][N], b[N][N];//结果数组,暂存数组 


int main(){
	int x, y ,r, z;
	
	cin>>n>>m;
	
	int cnt=0;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			a[i][j]= ++cnt;

	for(int k=1;k<=m;k++){
		cin>>x>>y>>r>>z;
		
		if(z==0){//顺时针
			for(int i=x-r; i<=x+r; i++){
				for(int j=y-r; j<=y+r; j++){
					b[x+j-y][y+x-i] = a[i][j];
				}
			}
		}
		else{//逆时针
			for(int i=x-r; i<=x+r; i++){
				for(int j=y-r; j<=y+r; j++){
					b[x-j+y][y-x+i] = a[i][j];
				}
			}
		}
		
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				a[i][j]=b[i][j];
	} 
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
			cout<<a[i][j]<<' ';
		cout<<endl;
	}
	return 0;
}
2023/3/28 23:18
加载中...