最后一个10分,其他全部裂开...
查看原帖
最后一个10分,其他全部裂开...
303132
Okimoto楼主2020/5/14 15:44
#include<stdio.h>
using namespace std;
void rt(int &x, int &y, int r, int z){
	if(z == 1){
		int t = x;
		x = 2 * r - y;
		y = t;
	}else{
		int t = x;
		x = y;
		y = 2 * r - t;
	}
}

int main(){
	int n, m, x, y, r, z, x_, y_, _x, _y;
	scanf("%d%d", &n, &m);
	int a[n][n], b[n][n], c[n][n], v[2];
	for(int i = 0; i < n; i ++){
		for(int j = 0; j < n; j ++){
			a[i][j] = i * n + j + 1;
		}
	}
	for(int i = 0; i < m; i ++){
		scanf("%d%d%d%d", &x, &y, &r, &z);
		x -= 1;
		y -= 1;
		x_ = r;
		y_ = r;
		v[0] = x - x_;
		v[1] = y - y_;
		for(int yy = 0; yy < 2 * r + 1; yy ++){
			for(int xx = 0; xx < 2 * r + 1; xx ++){
				b[yy][xx] = a[yy + v[1]][xx + v[0]];
			}
		}
		for(int yy = 0; yy < 2 * r + 1; yy ++){
			for(int xx = 0; xx < 2 * r + 1; xx ++){
				_x = xx;
				_y = yy;
				rt(_x, _y, r, z);
				c[_y][_x] = b[yy][xx];
			}
		}
		for(int yy = 0; yy < 2 * r + 1; yy ++){
			for(int xx = 0; xx < 2 * r + 1; xx ++){
				a[yy + v[1]][xx + v[0]] = c[yy][xx];
			}
		}
	}
	for(int i = 0; i < n; i ++){
		for(int j = 0; j < n; j ++){
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}
2020/5/14 15:44
加载中...