酷代码 AI
菜单

【NOIP2014 基础】螺旋矩阵 显示标签 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 128MB,其他语言 256MB 难度:提高 分数:100 OI排行榜得分:18(0.1*分数+2*难度) 出题人: 描述 一个 n 行 n 列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第 1 行第 1 列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入 1,2,3,...,n 2 ,便构成了一个螺旋矩阵。 下图是一个 n=4 时的螺旋矩阵。 ⎝ ⎜ ⎜ ⎜ ⎛ ​ 1 12 11 10 ​ 2 13 16 9 ​ 3 14 15 8 ​ 4 5 6 7 ​ ⎠ ⎟ ⎟ ⎟ ⎞ ​ 现给出矩阵大小 n 以及 i 和 j,请你求出该矩阵中第 i 行第 j 列的数是多少。 输入描述 共一行,包含三个整数 n, i, j,每两个整数之间用一个空格隔开,分别表示矩阵大小、待求的数所在的行号和列号。 输出描述 一个整数,表

```python # 读取输入 n, i, j = map(int, input().split()) # 初始化结果变量 result = 0 # 确定当前所在的层数 layer = min(i, j, n - i + 1, n - j + 1) # 计算当前层之前的数字总数 prev_sum = 4 * (n * (layer - 1) - (layer - 1) * (layer - 1)) # 计算当前层的边长 side_length = n - 2 * (layer - 1) # 判断位置并计算具体数字 if i == layer: # 当前行在层的上边界 result = prev_sum + j - (layer - 1) elif j == n - layer + 1: # 当前列在层的右边界 result = prev_sum + side_length + i - layer elif i == n - layer + 1: # 当前行在层的下边界 result = prev_sum + 2 * side_length + (n - layer + 1) - j else: # 当前列在层的左边界 result = prev_sum + 3 * side_length + (n - layer + 1) - i # 输出结果 print(result) ``` [2026-02-02 17:32:56 | AI问答 | 289点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多