求助,样例能够过但全wa
查看原帖
求助,样例能够过但全wa
613405
liuxiang007楼主2023/4/4 11:38
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <cmath>
#include <string>

using namespace std; 
typedef long long ll;
typedef pair<int, int> PII;
const int N = 510;
int n, m;
int s[N][N];

void change_1(int x, int y, int r){//顺时针90°,先转置矩阵,再左右颠倒 
	for(int i = x - r; i <= x + r; i++){
		for(int j = 0; j <= i - x + r; j++){
			swap(s[i][y - r + j], s[y - r + j][i]);
		}
	}
	for(int i = 0; i < r; i++){
		for(int j = x - r; j <= x + r; j++){
			swap(s[j][y - r + i], s[j][y + r - i]);
		}
	}
}

void change_2(int x, int y, int r){//逆时针90°,先转置矩阵,再上下颠倒 
	for(int i = x - r; i <= x + r; i++){
		for(int j = 0; j <= i - x + r; j++){
			swap(s[i][y - r + j], s[y - r + j][i]);
		}
	}
	for(int i = 0; i < r; i++){
		for(int j = y - r; j <= y + r; j++){
			swap(s[x - r + i][j], s[x + r - i][j]);
		}
	}
}

int main()
{
	ios::sync_with_stdio(0);
	cin>>n>>m;
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= n; j++){
			s[i][j] = (i - 1) * n + j;
		}
	}
	while(m--){
		int x, y, r, z;
		cin>>x>>y>>r>>z;
		if(z & 1) change_2(x, y, r);
		else change_1(x, y, r);
	}
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= n; j++){
			cout<<s[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
2023/4/4 11:38
加载中...