畢業照C (自定義排序)

2021-10-09 22:36:43 字數 2025 閱讀 7294

照畢業照一定要排好隊,不然就會有人被擋住,造成終身遺憾。假設有n個畢業生,準備排k行,拍畢業照的攝影師定下這麼幾條規矩: 1、每一行的人數一定是n/k個,如果有多的同學,全部站最後一排; 2、後排的一定不能比前排任何乙個同學矮; 3、在任意一排,個子最高的站中間,之後次高的站他的右邊,第三高的站他的左邊,第四高的又站右邊,這樣依次輪換。例如,有5個同學,身高依次是190厘公尺,188厘公尺,186厘公尺,175厘公尺和170厘公尺,那麼最後應該排成175,188, 190,186, 170。這裡我們假設攝影師面向同學們站立,這樣攝影師的左手就是同學們的右手。 4、如果身高相同,那就按姓名的字母序的公升序排列,我們假定沒有重名的。

輸入格式:

每個輸入包括乙個測試用例,第一行有兩個正整數n和k,其中n是畢業生總數,k是排數。 n<=10000,k<=10,隨後n行,分別給出不超過8個字元的姓名以及他們的身高,姓名中不含空格。

輸出格式:

對每一組輸入,顯示出畢業生拍照時的位置情況,要求列印k行學生的姓名,姓名之間以1個空格分隔,行尾不得有多餘空格。因為你是面向畢業生的,所以在最後一排的同學應該顯示在第一行,在第一排的同學顯示在最後一行。

輸入樣例:

在這裡給出一組輸入。例如:

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

#include

#include

#include

#include

#include

using

namespace std;

#define max_n 10005

struct node

date[max_n]

;int n,k;

bool

cmp1

(const node a,

const node b)

bool

cmp2

(const node a,

const node b)

voidf(

)}else

} t =0;

flag =1;

node_h ++;}

}void

print_ans()

cout << endl;

for(i;i<=n;i++)}

void

print()

cout << endl;

for(

int i =

1;i<=n;i++

) cout << endl;

for(

int i =

1;i<=n;i++

) cout <<

"\n**************/"

}int

main()

//比較身高

sort

(date+

1,date+

1+n,cmp1)

;//print();

//排列f(

);//print();

//全規則排序

sort

(date+

1,date+

1+n,cmp2)

;//print();

//輸出答案

print_ans()

;return0;

}

c 自定義排序

class program console.writeline console.writeline source tolist value var list arr.tolist for int i 0 i 10 i console.writeline console.writeline sourc...

C 自定義排序

include include include using namespace std bool compare1 const int a,const int b bool compare2 const int a,const int b bool compare3 const int a,cons...

C 自定義類排序

1 宣告乙個類 人物類 public class person 2 宣告乙個繼承了介面icomparer的類 比較人物類例項大小,實現介面icomparer public class personcomparer icomparer return 0 3 main函式,建立乙個list,並使用剛建立...