- 矩阵翻转
题目描述:
– 输入一个N阶方阵(0<N<10),输出此方阵顺时针旋转M(0<=M<=10000)次后的方阵
– 旋转举例:(如下四个三阶方阵从上到下为数字围绕中心顺时针旋转)
1 2 3
4 5 6
7 8 9
7 4 1
8 5 2
9 6 3
9 8 7
6 5 4
3 2 1
3 6 9
2 5 8
1 4 7
输入描述:
(1) 输入第一行一个正整数N (0<N<10)
(2) 接下来N行每行N个整数用空格分开,为方阵的数据
(3) 接下来一行一个正整数M (0<=M<=10000)
说明:不用考虑异常输入,所有输入都是正常的,严格遵从取值范围
输出描述:
(1) N行,每行N个整数,用空格分开,为旋转后的数据
示例1:
– 输入
3
1 2 3
4 5 6
7 8 9
2
– 输出
9 8 7
6 5 4
3 2 1
import sys
while True:
try:
N = int(sys.stdin.readline().strip()) # N行,每行N个整数
list_ = []
for i in range(N):
line = sys.stdin.readline().strip().split() # [1,2,3]
list_.append(line)
M = int(sys.stdin.readline().strip()) # 顺时针旋转M次
t = M % 4
if t == 0:
for i in range(N):
temp = list_[i]
print(' '.join(temp))
elif t == 1:
for i in range(N):
temp = []
for j in list(reversed(range(N))):
temp.append(list_[j][i])
print(' '.join(temp))
elif t == 2:
for i in list(reversed(range(N))):
temp = []
for j in list(reversed(range(N))):
temp.append(list_[i][j])
print(' '.join(temp))
else:
for i in list(reversed(range(N))):
temp = []
for j in range(N):
temp.append(list_[j][i])
print(' '.join(temp))
except:
break
- 分礼物
题目描述
圣诞节到了,城堡里有k个小朋友,圣诞老人口袋里带了n件无差别的小礼物,请帮圣诞老人处理:将n个无差别的礼物分给k个小朋友的分法问题
给定n和k,数出分法种数,并枚举所有的分法
输出描述
仅一行,包含两个证书n(0 <= n <= 10)和k(0<= k<= 10), n 表示礼物的数量,k表示小朋友的数量
测试案例
输入:3 2
输出:
4
***|
**|*
*|**
|***
def deliver_presents(index, n, k, path):
if index == a:
res.append(path)
return
if n > 0:
deliver_presents(index + 1, n - 1, k, path + "*")
if k > 0:
deliver_presents(index + 1, n, k - 1, path + "|")
while True:
try:
l_tmp = input().split()
n = int(l_tmp[0]) # 礼物数量
k = int(l_tmp[1]) # 小朋友数量
res = []
a = n + k - 1
deliver_presents(0, n, k - 1, "")
print(len(res))
for i in range(len(res)):
print(res[i])
except:
break
第三题没做出来,以后有机会更新。。。