|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 sfqxx 于 2023-7-8 22:00 编辑
题目:
给定一个 N 行 N 列的网格,每个方块上都写着一个整数 A[i][j],其中 i 表示从上往下的行数,j 表示从左往右的列数。保证 A[i][j] 的取值为 0 或 1。
将外层方块中的整数顺时针移动一格,并打印出结果网格。
这里,外层方块指的是第一行、最后一行、第一列和最后一列中的方块。
约束条件
2 ≤ N ≤ 100
0 ≤ A[i][j] ≤ 1(1 ≤ i, j ≤ N)
输入
输入以以下格式从标准输入中给出:
N
A[1][1] A[1][2] ... A[1][N]
A[2][1] A[2][2] ... A[2][N]
⋮
A[N][1] A[N][2] ... A[N][N]
输出
将结果网格中每个方块的整数 B[i][j] 按如下格式打印出来:
B[1][1] B[1][2] ... B[1][N]
B[2][1] B[2][2] ... B[2][N]
⋮
B[N][1] B[N][2] ... B[N][N]
样例输入1
复制
4
0101
1101
1111
0000
样例输出1
复制
1010
1101
0111
0001
我们用 (i, j) 表示从上往下的 i-th 行和从左往右的 j-th 列中的方块。
外层方块按照顺时针的顺序依次为:(1,1),(1,2),(1,3),(1,4),(2,4),(3,4),(4,4),(4,3),(4,2),(4,1),(3,1) 和 (2,1)。
样例输出展示了将这些方块中的整数按顺时针方向向右移动一格后得到的结果网格。
我的代码:- a = int(input())
- c = []
- for _ in range(a):
- b = list(map(int, input().split()))
- c.append(b)
- print()
- i = 0
- for _ in range(a - 1):
- print(c[i], end="")
- i += 1
- print()
- j = 2
- h = 1
- for _ in range(a):
- print(c[a * j + 1], end="")
- g = 2
- for _ in range(a - 1):
- print(c[a * h + g], end="")
- g += 1
- print()
- j += 1
- k = a - 1
- for _ in range(a - 1):
- print(a * a - k, end="")
- k -= 1
- print((a - 1) * a)
复制代码
RE了
- n = int();
- s = [['' for i in range(102)] for i in range(102)]
- n = int(input())
- for i in range(1, n + 1):
- s[i] = ' ' + input()
- for i in range(1, n + 1):
- for j in range(1, n + 1):
- if i != 1 and j != 1 and i != n and j != n:
- print(s[i][j], end = '')
- else:
- if i == 1:
- if j == 1:
- print(s[i + 1][j], end = '')
- else:
- print(s[i][j - 1], end = '')
- elif j == n:
- if i == 1:
- print(s[i][j + 1], end = '')
- else:
- print(s[i - 1][j], end = '')
- elif i == n:
- if j == n:
- print(s[i + 1][j], end = '')
- else:
- print(s[i][j + 1], end = '')
- elif j == 1:
- if i == n:
- print(s[i][j - 1], end = '')
- else:
- print(s[i + 1][j], end = '')
- print()
复制代码
这是我按照我原本的 C++ 代码翻译过来的,供参考。
|
|