P4927不知道代码哪里错了
  • 板块题目总版
  • 楼主lintys
  • 当前回复5
  • 已保存回复5
  • 发布时间2020/7/13 16:57
  • 上次更新2023/11/6 23:11:50
查看原帖
P4927不知道代码哪里错了
335141
lintys楼主2020/7/13 16:57

P4927只过了一个用例,代码哪里错了呀

#include <iostream>

using namespace std;

const int maxn = 1000;

int mat[maxn][maxn];

void swap(int x1, int y1, int x2, int y2){
	int t = mat[x1][y1];
	mat[x1][y1] = mat[x2][y2];
	mat[x2][y2] = t;
}

void rotate(int x, int y, int s, int z){
	// 转置
	for(int i = 0; i < s; i++){
		for(int j = i + 1; j < s; j++){
			swap(i + x, j + y, j + x, i + y);
		}
	}
	if(z == 0){
    	//调换start列和end列
		int start = y, end = y + s - 1;
		while(start < end){
			for(int i = 0; i < s; i++){
				swap(x + i, start, x + i, end);
			}
			start += 1;
			end -= 1;
		}
	}else{
    	//调换start行和end行
		int start = x, end = x + s - 1;
		while(start < end){
			for(int i = 0; i < s; i++){
				swap(start, y + i, end, y + i);
			}
			start += 1;
			end -= 1;
		}
	}
}

int main(){
	int n, m;
	cin >> n >> m;
	int cnt = 1;
	for(int i = 0; i < n; i++){
		for(int j = 0; j < n; j++){
			mat[i][j] = cnt++;
		}
	}
	while(m-- > 0){
		int x, y, r, z;
		cin >> x >> y >> r >> z;
		int startx = x - r - 1, starty = y - r - 1;
		rotate(startx, starty, 2 * r + 1, z);

	}
	for(int i = 0; i < n; i++){
		for(int j = 0; j < n; j++){
			cout << mat[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}


2020/7/13 16:57
加载中...