欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 编程语言 > >内容正文

python

【python】 1055 集体照 (25 分) -凯发ag旗舰厅登录网址下载

发布时间:2025/1/21 14 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 【python】 1055 集体照 (25 分) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1. 题目:

题目地址: https://pintia.cn/problem-sets/994805260223102976/problems/994805272021680128

1055 集体照 (25 分) 拍集体照时队形很重要,这里对给定的 n 个人 k 排的队形设计排队规则如下:每排人数为 n/k(向下取整),多出来的人全部站在最后一排;后排所有人的个子都不比前排任何人矮;每排中最高者站中间(中间位置为 m/2 1,其中 m 为该排人数,除法向下取整);每排其他人以中间人为轴,按身高非增序,先右后左交替入队站在中间人的两侧(例如5人身高为190、188、186、175、170,则队形为175、188、190、186、170。这里假设你面对拍照者,所以你的左边是中间人的右边);若多人身高相同,则按名字的字典序升序排列。这里保证无重名。现给定一组拍照人,请编写程序输出他们的队形。输入格式: 每个输入包含 1 个测试用例。每个测试用例第 1 行给出两个正整数 n(≤10 4 ​​ ,总人数)和 k(≤10,总排数)。随后 n 行,每行给出一个人的名字(不包含空格、长度不超过 8 个英文字母)和身高([30, 300] 区间内的整数)。输出格式: 输出拍照的队形。即k排人名,其间以空格分隔,行末不得有多余空格。注意:假设你面对拍照者,后排的人输出在上方,前排输出在下方。输入样例: 10 3 tom 188 mike 170 eva 168 tim 160 joe 190 ann 168 bob 175 nick 186 amy 160 john 159 输出样例: bob tom joe nick ann mike eva tim amy john

2. ac代码

# https://pintia.cn/problem-sets/994805260223102976/problems/994805272021680128 # 1055 集体照 (25 分) # 题目本身是简单的,任何复杂的算法都没用上 # 但是,有些地方有些不太好梳理 (因为不是线性的放置数字,是跳着来的) # 我的脑子有点笨,转不过来# 1. 读取数据 n, k = map(int, input().split()) persons = []for i in range(n):tmp = input().split()# 添加学生信息persons.append({'name': tmp[0],'height': int(tmp[1])})# print(persons)persons.sort(key=lambda item: (-item['height'], item['name']))# print(persons)# 2. 排位置 row_num = k col_num = n // ktable = [['0' for i in range(col_num1)] for j in range(row_num)]# for line in table: # print(" ".join(line))# 填数组 pos = 0 for row in range(row_num):m = n - col_num * (k-1) if row == 0 else col_num# 起始值,中间位置索引index = m//2filled = 0weidu = 0while index >= 0 and index < m and filled < m:# 保证数组不越界&当前行数据未填满if index-weidu == m // 2:table[row][index] = persons[pos]['name']pos = 1filled = 1else:# print(f"row={row},index={index},weidu={weidu}")if index-weidu >= 0:# 填左边table[row][index-weidu] = persons[pos]['name']pos = 1filled = 1if indexweidu < m:# 填右边table[row][indexweidu] = persons[pos]['name']pos = 1filled = 1weidu = 1for line in table:if '0' in line:line.remove('0')print(" ".join(line))

总结

以上是凯发ag旗舰厅登录网址下载为你收集整理的【python】 1055 集体照 (25 分)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图