【Python】 1055 集体照 (25 分)
生活随笔
收集整理的這篇文章主要介紹了
【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 John2. 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_num+1)] 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 index+weidu < m:# 填右邊table[row][index+weidu] = persons[pos]['name']pos += 1filled += 1weidu += 1for line in table:if '0' in line:line.remove('0')print(" ".join(line))總結
以上是生活随笔為你收集整理的【Python】 1055 集体照 (25 分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Selenium】导出成py脚本的基础
- 下一篇: ViewPager实现翻页效果导航点