1055. 集体照 (25)——Python

还有两个测试点没有通过,先记录下来,等下午再整整

#得到输出
def get_out(list):
	length = len(list)
	for i in range(length):
		if i == length - 1:
			print(list[i])
		else:
			print(list[i] + ' ', end = '')
			
#得到输出每列的排列
def get_(circle, num_per, list_height, dir_height):
	for k in range(circle):
		flag = 1
		list = []
		for i in range(num_per):
			list.append('')		
		middle = (num_per) // 2 
		#print(middle)
		my_length = 0
		while my_length != num_per:
			key_height = list_height.pop(0)
			key_name = dir_height[key_height]
			length = len(key_name)
			
			for j in range(length):
				my_name = key_name.pop(0)
				#print(my_name)
				#print(middle)
				my_length += 1
				list[middle] = my_name
				#middle = (num_per) // 2 
				if flag % 2 == 1:
					middle -= flag
				else:
					middle += flag
				flag += 1
		get_out(list)


string_1 = input().split()
num_1, num_2 = int(string_1[0]), int(string_1[1])
num_per = num_1 // num_2
remainder = num_1 % num_2
list_height = []
dir_height = {}

#将所有的数据放在以身高为关键字的字典中
for i in range(num_1):	
	name, height = input().split()
	height = int(height)
	if height in list_height:
		dir_height[height].append(name)
		dir_height[height].sort()
	else:
		list_height.append(height)
		dir_height[height] = ''
		list_name = []
		list_name.append(name)
		dir_height[height] = list_name

list_height.sort()
list_height.reverse()

#单独处理最后一排
get_(1, num_per + remainder, list_height, dir_height)
#对于剩余的队列进行处理
get_(num_2 - 1, num_per, list_height, dir_height)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值