#13164. 珅泽教育CSP-J第一轮模拟考第三十套 第 21 题
珅泽教育CSP-J第一轮模拟考第三十套 第 21 题
二、程序阅读题(每个小题单独作答,共40分)
程序阅读(1):方阵旋转
输入的 n,m 均不超过500;每次操作给出中心 (a,b)、半径 r 与方向 opt。
#include <cstdio>
int g[510][510], tot, f[510][510];
int main(){
int n, m;
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
g[i][j] = ++tot;
for (int i = 1; i <= m; i++){
int a, b, r, opt;
scanf("%d %d %d %d", &a, &b, &r, &opt);
if (opt == 0){
for (int i = a - r; i <= a + r; i++)
for (int j = b - r; j <= b + r; j++)
f[a - b + j][a + b - i] = g[i][j];
for (int i = a - r; i <= a + r; i++)
for (int j = b - r; j <= b + r; j++)
g[i][j] = f[i][j];
}
if (opt == 1){
for (int i = a - r; i <= a + r; i++)
for (int j = b - r; j <= b + r; j++)
f[a + b - j][b - a + i] = g[i][j];
for (int i = a - r; i <= a + r; i++)
for (int j = b - r; j <= b + r; j++)
g[i][j] = f[i][j];
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)
printf("%d ", g[i][j]);
printf("\n");
}
return 0;
}
当 n=5,m=3,三次操作依次为 2 2 1 0、3 3 1 1、4 4 1 0 时,最终矩阵第4行是( )。
{{ select(1) }}
11 6 1 4 513 2 23 8 316 7 24 17 1812 9 14 19 10