package top.actim.test07;
/* 示例输入
** 1 几组数据
** 5 1 矩阵边长 查询次数
** 1 4 横坐标 纵坐标
*/
/* 示例输出
** 6 生成矩阵对应坐标下的值
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
while (n-- > 0) {
String[] wit = sc.nextLine().split(" ");
int N = Integer.parseInt(wit[0]);
int M = Integer.parseInt(wit[1]);
int[][] ans = new int[N][N];
int len = N - 1;
int count = 1;
for (int i = 1; i <= N / 2 + 1; i++) {
int a = i - 1; // hang
int b = N - i; // lie
int c = N - i; // hang
int d = i - 1; // lie
if (i % 2 == 1) {
for (int j = 0; j < len; j++) {
ans[a][a + j] = count++;
}
for (int j = 0; j < len; j++) {
ans[a + j][b] = count++;
}
for (int j = 0; j < len; j++) {
ans[c][b - j] = count++;
}
for (int j = 0; j < len; j++) {
ans[c - j][d] = count++;
}
} else {
for (int j = 0; j < len; j++) {
ans[a + j][a] = count++;
}
for (int j = 0; j < len; j++) {
ans[b][a + j] = count++;
}
for (int j = 0; j < len; j++) {
ans[c - j][b] = count++;
}
for (int j = 0; j < len; j++) {
ans[d][c - j] = count++;
}
}
len -= 2;
}
if (N % 2 == 1) {
ans[N / 2][N / 2] = N * N;
}
for (int i = 0; i < M; i++) {
wit = sc.nextLine().split(" ");
System.out.println(ans[Integer.parseInt(wit[0])][Integer.parseInt(wit[1])]);
}
}
}
}
【忘了面试】转圈建立方阵,奇数偶数圈不同方向
猜你喜欢
转载自blog.csdn.net/Activity_Time/article/details/108892806
今日推荐
周排行