给你两个整数n,m ,请你构造一个n 行m 列的蛇形方阵,在这个方阵中,数字的填充方式为:由1 到n×m ,从第一行到最后一行,从左到右、然后从右到左并不断循环地填充,注意这里的从左往右指的是行号不变,而列号不断加一的过程,从右往左指的是行号不变,而列号不断减一的过程。例如n=3,m=4 的时候,蛇形方阵如下: 1 2 3 4 8 7 6 5 9 10 11 12 输入格式 第一行包含两个整数n,m 。 输出格式 一共n 行,每行m 个整数,表示对应的蛇形方阵,同一行的相邻两个数之间用一个空格分隔。 样例输入 4 2 样例输出 1 2 4 3 5 6 8 7 数据规模 对于100% 的数据,保证1≤n,m≤100 。
时间: 2023-02-09 18:24:07 浏览: 109
请用代码实现构造一个n行m列的蛇形方阵,在这个方阵中,数字的填充方式为:由1到n*m,从第一行到最后一行,从左到右、然后从右到左并不断循环地填充,注意这里的从左往右指的是行号不变,而列号不断加一的过程,从右往左指的是行号不变,而列号不断减一的过程。
```python
n, m = map(int, input().split())
matrix = [[0] * m for _ in range(n)]
val = 1
for i in range(n):
if i % 2 == 0:
for j in range(m):
matrix[i][j] = val
val += 1
else:
for j in range(m-1, -1, -1):
matrix[i][j] = val
val += 1
for row in matrix:
print(" ".join(str(x) for x in row))
```
样例输入 4 2
样例输出
1 2
4 3
5 6
8 7
对于100%的数据,保证1≤n,m≤100
相关问题
输出一个不大于九的整数n,输出n*n的蛇形方阵
以下是Python代码实现:
n = int(input("请输入一个不大于9的整数:"))
matrix = [[0 for i in range(n)] for j in range(n)]
num = 1
for i in range(n):
if i % 2 == 0:
for j in range(n):
matrix[i][j] = num
num += 1
else:
for j in range(n-1, -1, -1):
matrix[i][j] = num
num += 1
for i in range(n):
for j in range(n):
print(matrix[i][j], end="\t")
print()
输出示例:
请输入一个不大于9的整数:5
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
解释:
输入了5,即需要输出5*5的蛇形方阵。首先创建一个5*5的矩阵,然后从左到右、从右到左、从左到右……依次填充数字,最后输出整个矩阵。
给你两个整数 n,m,请你构造一个 n 行 m 列的蛇形方阵,在这个方阵中,数字由 1 到 n×m,从最右上角开始,呈环状(逆时针)向内填充,例如 n=3,m=3 的时候,蛇形方阵如下: 3 2 1 4 9 8 5 6 7 输入格式 第一行包含两个整数 n,m。 输出格式 一共 n 行,每行 m 个整数,表示对应的蛇形方阵,同一行的相邻两个数之间用一个空格分隔。 样例输入 4 6 样例输出 6 5 4 3 2 1 7 20 19 18 17 16 8 21 22 23 24 15 9 10 1
这是一道蛇形矩阵的问题,可以使用模拟的方法进行求解。
具体思路如下:
1. 定义一个二维数组,用于存储蛇形方阵。
2. 定义两个变量 i 和 j,表示当前要填充的位置。
3. 从最右上角开始,按照逆时针方向填充数字,每填充一个数字,就将 i 和 j 更新为下一个要填充的位置。
4. 如果下一个要填充的位置已经被填充过了,就将 i 和 j 更新为下一个要填充的位置。
5. 重复步骤 3 和 4,直到填充完所有的数字。
下面是 Python 代码实现:
```python
n, m = map(int, input().split())
# 定义二维数组
res = [[0] * m for _ in range(n)]
# 定义方向数组
dx, dy = [-1, 0, 1, 0], [0, 1, 0, -1]
# 定义起始位置和方向
x, y, d = 0, m - 1, 0
# 从最右上角开始,逆时针方向填充数字
for i in range(1, n * m + 1):
res[x][y] = i
nx, ny = x + dx[d], y + dy[d]
if nx < 0 or nx >= n or ny < 0 or ny >= m or res[nx][ny] != 0:
d = (d + 1) % 4
nx, ny = x + dx[d], y + dy[d]
x, y = nx, ny
# 输出结果
for i in range(n):
print(' '.join(str(x) for x in res[i]))
```
输入样例:
```
4 6
```
输出样例:
```
6 5 4 3 2 1
7 20 19 18 17 16
8 21 22 23 24 15
9 10 11 12 13 14
```