PAT-B 1055. 集體照 (25)

傳送門

https://pintia.cn/problem-sets/994805260223102976/problems/994805272021680128

題目

拍集體照時隊形很重要,這里對給定的N個人K排的隊形設(shè)計排隊規(guī)則如下:

  • 每排人數(shù)為N/K(向下取整),多出來的人全部站在最后一排;
  • 后排所有人的個子都不比前排任何人矮;
  • 每排中最高者站中間(中間位置為m/2+1碗脊,其中m為該排人數(shù),除法向下取整);
  • 每排其他人以中間人為軸顾画,按身高非增序,先右后左交替入隊站在中間人的兩側(cè)(例如5人身高為190匆笤、188研侣、186、175炮捧、170庶诡,則隊形為175、188咆课、190末誓、186、170书蚪。這里假設(shè)你面對拍照者喇澡,所以你的左邊是中間人的右邊);
  • 若多人身高相同善炫,則按名字的字典序升序排列撩幽。這里保證無重名。

現(xiàn)給定一組拍照人箩艺,請編寫程序輸出他們的隊形窜醉。
輸入格式:
每個輸入包含1個測試用例。每個測試用例第1行給出兩個正整數(shù)N(<=10000艺谆,總?cè)藬?shù))和K(<=10榨惰,總排數(shù))。隨后N行静汤,每行給出一個人的名字(不包含空格琅催、長度不超過8個英文字母)和身高([30, 300]區(qū)間內(nèi)的整數(shù))居凶。
輸出格式:
輸出拍照的隊形。即K排人名藤抡,其間以空格分隔侠碧,行末不得有多余空格。注意:假設(shè)你面對拍照者缠黍,后排的人輸出在上方弄兜,前排輸出在下方。
輸入樣例:
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

分析

1.首先建個結(jié)構(gòu)體數(shù)組存數(shù)據(jù)瓷式;
2.然后用sort排序(先按身高排序替饿,若身高相等,按字母排序)贸典;
3.按照先中間视卢,再左邊,再右邊的順序往將要輸出的字符串里面存人名廊驼,要加上空格据过,每存滿一列的人名后就輸出結(jié)果。

遇到的坑:
1.按字母排序的時候蔬充,我只比較了第一位的字母蝶俱, 只通過了前三個測試點,顯然測試數(shù)據(jù)想的比較全饥漫,于是榨呆,換成直接利用字符串比大小就行了;
2.題目中說排隊的邏輯也是倒著說的:“每排的身高非增序庸队、字母序升序”积蜻,由于我也要從最后一排倒著輸出,所以排序肯定與題目要求是一致的而不是相反的彻消,這里不要搞錯了竿拆,所以是身高降序,字母序升序宾尚。

源代碼

//C/C++實現(xiàn)
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

struct student{
    string name;
    int height;
};

bool compare(struct student a, struct student b){
    if(a.height != b.height){
        return a.height > b.height;
    }
    else{
        return a.name < b.name;
    }
    
}

int main(){
    int n, k;
    scanf("%d %d", &n, &k);
    vector<struct student> v(n);
    for(int i = 0; i < n; ++i){
        cin >> v[i].name >> v[i].height;
    }
    sort(v.begin(), v.end(), compare);
    int col = n / k; //其他排的人數(shù) 
    int final = n / k + (n % k); //最后一排人數(shù)
    string result = "";
    for(int i = 0; i < n; ){
        if(i == 0){ //先站最后一排 
            result = v[i].name;
            ++i;
            for(int j = 1; j < final; ++j, ++i){
                if(j % 2 == 1){
                    result = v[i].name + " " + result;
                }
                else{
                    result = result + " " + v[i].name;
                }
            }
            cout << result << endl;
        }
        else{
            result = v[i].name;
            ++i;
            for(int j = 1; j < col; ++j, ++i){
                if(j % 2 == 1){
                    result = v[i].name + " " + result;
                }
                else{
                    result = result + " " + v[i].name;
                }
            }
            cout << result << endl;
        }
    } 
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丙笋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子煌贴,更是在濱河造成了極大的恐慌御板,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牛郑,死亡現(xiàn)場離奇詭異怠肋,居然都是意外死亡,警方通過查閱死者的電腦和手機淹朋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門笙各,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钉答,“玉大人,你說我怎么就攤上這事杈抢∈颍” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵惶楼,是天一觀的道長砌创。 經(jīng)常有香客問我,道長鲫懒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任刽辙,我火速辦了婚禮窥岩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宰缤。我一直安慰自己颂翼,他們只是感情好,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布慨灭。 她就那樣靜靜地躺著朦乏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪氧骤。 梳的紋絲不亂的頭發(fā)上呻疹,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音筹陵,去河邊找鬼刽锤。 笑死,一個胖子當著我的面吹牛朦佩,可吹牛的內(nèi)容都是我干的并思。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼语稠,長吁一口氣:“原來是場噩夢啊……” “哼宋彼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起仙畦,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤输涕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后议泵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體占贫,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年先口,在試婚紗的時候發(fā)現(xiàn)自己被綠了型奥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞳收。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖厢汹,靈堂內(nèi)的尸體忽然破棺而出螟深,到底是詐尸還是另有隱情,我是刑警寧澤烫葬,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布界弧,位于F島的核電站,受9級特大地震影響搭综,放射性物質(zhì)發(fā)生泄漏垢箕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一兑巾、第九天 我趴在偏房一處隱蔽的房頂上張望条获。 院中可真熱鬧,春花似錦蒋歌、人聲如沸帅掘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽修档。三九已至,卻和暖如春府框,著一層夾襖步出監(jiān)牢的瞬間吱窝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工寓免, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留癣诱,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓袜香,卻偏偏與公主長得像撕予,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蜈首,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 我的PAT系列文章更新重心已移至Github实抡,歡迎來看PAT題解的小伙伴請到Github Pages瀏覽最新內(nèi)容。...
    OliverLew閱讀 1,343評論 2 3
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好...
    依依玖玥閱讀 1,245評論 0 2
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗欢策。 張土汪:刷leetcod...
    土汪閱讀 12,740評論 0 33
  • 概述 排序有內(nèi)部排序和外部排序吆寨,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大踩寇,一次不能容納全部...
    蟻前閱讀 5,170評論 0 52
  • 概述:排序有內(nèi)部排序和外部排序啄清,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大俺孙,一次不能容納全部...
    每天刷兩次牙閱讀 3,729評論 0 15