推荐多样性(200)
- 第一行输入n,即窗口数;
- 第二行输入k, 每个窗口的大小;
- 后续输入不确定的行,每行为一个数字列表(各个列表长度相同);
- 从第一个列表中选择4个连续的数值,分别放入n个窗口中,再从第二个列表中选择4个连续的数,接着上一步继续放入窗口中(比如有5个窗口,前4个放入数据后,从第5个接着放;然后再次从第1个窗口开始)…,依次类推;
- 当列表中的元素不够4个时,则取剩余的元素,并逐一分配给每个窗口;直到每个窗口都有k个数字为止;
- 输出每个窗口的数字列表,n个窗口连成一行,以空格分隔;
示例1
输入:
4
7
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
输出:
0 10 20 4 14 24 8 1 11 21 5 15 25 9 2 12 22 6 16 26 18 3 13 23 7 17 27 19
示例2
输入:
5
3
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
输出:
0 11 22 1 12 23 2 13 4 3 20 5 10 21 6
思路:
- 简单模拟过程即可
# 输入数值n,表示窗口数
n = int(input().strip())
# 输入k, 表示每个窗口的大小
k = int(input().strip())# 输入不确定的多个数值列表
alist = []
# while True:
# try:
# alist.append([int(x) for x in input().strip().split()])
# except EOFError: # 机试环境 可以传递异常
# break
for i in range(3): # 自己测试 输入数字列表alist.append([int(x) for x in input().strip().split()]) # 从列表中取数字的起始索引(标记每轮的起始索引),每次固定取4个
start_index = [0 for x in range(len(alist))]
nums = [] # 取的每四个数字都放入该列表
while True:if len(nums) >= n * k:breakelse:for i in range(len(alist)):end_index = len(alist[i])if end_index > start_index[i] + 4:end_index = start_index[i] + 4j = start_index[i]while j < end_index:nums.append(alist[i][j])j += 1start_index[i] = end_index# 最后拼接
output_str = ""
for n_ in range(n): # 第几个窗口for k_ in range(k): # 当前窗口中的第几个数 与nums的索引形成关联output_str += str(nums[k_ * n + n_]) + " "
print(output_str[:-1])