資訊學奧賽一本通C 語言 1183 病人排隊

2021-10-23 01:45:39 字數 3001 閱讀 9523

【題目描述】

病人登記看病,編寫乙個程式,將登記的病人按照以下原則排出看病的先後順序:

1.老年人(年齡 >= 60歲)比非老年人優先看病。

2.老年人按年齡從大到小的順序看病,年齡相同的按登記的先後順序排序。

3.非老年人按登記的先後順序看病。

【輸入】

第1行,輸入乙個小於100的正整數,表示病人的個數;

後面按照病人登記的先後順序,每行輸入乙個病人的資訊,包括:乙個長度小於10的字串表示病人的id(每個病人的id各不相同且只含數字和字母),乙個整數表示病人的年齡,中間用單個空格隔開。

【輸出】

按排好的看病順序輸出病人的id,每行乙個。

【輸入樣例】

5021075 40

004003 15

010158 67

021033 75

102012 30

【輸出樣例】

021033

010158

021075

004003

102012

【源**】

方法一:穩定排序(歸併排序演算法)

#include

#include

#include

using

namespace std;

#define sizen 110

struct patient

;void

merge_sort

(patient *arr, patient *tmp,

const

int s,

const

int e)

;//定義歸併排序函式

intmain()

else

} patient old_tmp[sizen]

;//臨時陣列

merge_sort

(old_people,old_tmp,

0,op-1)

;//呼叫歸併排序函式

for(

int i=op-

1; i>=

0; i--

)for

(int i=

0; i)return0;

}void

merge_sort

(patient *arr, patient *tmp,

const

int s,

const

int e)

}

方法二:穩定排序(氣泡排序演算法)

#include

#include

#include

using

namespace std;

#define sizen 110

struct patient

;void

bubble_sort

(patient *arr,

const

int len)

;//定義氣泡排序函式

intmain()

else

}bubble_sort

(old_people,op)

;//呼叫氣泡排序函式

for(

int i=

0; i)for

(int i=

0; i)return0;

}void

bubble_sort

(patient *arr,

const

int len)}if

(ok)

break;}

return

;}

方法三:穩定排序(插入排序演算法)

#include

#include

#include

using

namespace std;

#define sizen 110

struct patient

;void

insert_sort

(patient *arr,

const

int len)

;//定義插入排序函式

intmain()

else

}insert_sort

(old_people,op)

;//呼叫插入排序函式

for(

int i=

1; i<=op; i++

)for

(int i=

1; i<=ns; i++

)return0;

}void

insert_sort

(patient *arr,

const

int len)

if(j!=i-

1)arr[j+1]

=arr[0]

;//插入

}return

;}

方法四:不穩定排序(測試時有可能通不過,這裡僅展示不穩定排序)

#include

#include

#include

using

namespace std;

struct patient

;void

selectsort

(patient *arr,

int n)

;//定義選擇排序函式

intmain()

else

}selectsort

(old_people,op)

;//呼叫選擇排序函式

for(

int i=

0; i)for

(int i=

0; i)return0;

}void

selectsort

(patient *arr,

int n)}if

(x!=i)

}return

;}

資訊學奧賽一本通(C 版)

資訊學奧賽一本通 c 版 總目錄 1.資訊學奧賽一本通 c 版 刷題 記錄 2.資訊學奧賽一本通 c 版 第一部分 c 語言 第一章 c 語言入門 3.資訊學奧賽一本通 c 版 第一部分 c 語言 第二章 順序結構程式設計 4.資訊學奧賽一本通 c 版 第一部分 c 語言 第三章 程式的控制結構 5...

資訊學奧賽一本通C 語言 1215 迷宮

題目描述 一天extense在森林裡探險的時候不小心走入了乙個迷宮,迷宮可以看成是由n n的格點組成,每個格點只有2種狀態,和 前者表示可以通行後者表示不能通行。同時當extense處在某個格點時,他只能移動到東南西北 或者說上下左右 四個方向之一的相鄰格點上,extense想要從點a走到點b,問在...

資訊學奧賽一本通C 語言 1216 紅與黑

題目描述 有一間長方形的房子,地上鋪了紅色 黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入 包括多個資料集合。每個資料集合的第一行是兩個整數w和h,分別表示x方向和y方向瓷磚的數量。w和h都不超過20。在接下來的...