假設在週末舞會上,男士和女士進入舞廳,各自排成一隊,跳舞開始時,依次從男隊和女隊的隊頭各出一人配成舞伴。若兩隊初始人數不相同,那麼較長的那一對中未配對者等待下一輪舞曲,試寫一種演算法模擬上面的舞伴問題
我們可以看出這是乙個典型的佇列問題,我們只需要把男士隊和女士隊看成佇列,我們可以把男士和女士的資訊都儲存在乙個陣列中,再根據不同的性別儲存到不同的佇列中。然後開始給佇列配對,當有乙個隊列為空的時候,另外乙個佇列有等待者,則輸出隊頭等待者的姓名,此人將是下乙個可以獲得舞伴的人
#include
using namespace std;
#define maxsize 100
#define status int
#define ok 1
#define error 0
#define qelemtype person
typedef struct
person;
typedef struct
sqqueue;
status initqueue
(sqqueue &q)
//佇列初始化
status enqueue
(sqqueue &q,qelemtype e)
//入隊
status dequeue
(sqqueue &q,qelemtype &e)
//出隊
qelemtype gethead
(sqqueue q)
//得到佇列頭元素
status queueempty
(sqqueue q)
void dancepartner
(person dance,
int num)
//dance表示跳舞男女的資訊,num表示跳舞的人數
cout<<
"the dancing partners are:\n"
;while(!
queueempty
(wdancers)&&!
queueempty
(mdancers))if
(!queueempty
(wdancers))if
(!queueempty
(mdancers))}
intmain()
dancepartner
(dance,n)
;}
例子:
佇列 舞伴問題
所有男士女士存放在陣列dancer中,按照性別分為兩個佇列,之後每個佇列各出頭元素進行配對,配對時輸出出對人姓名,最後再輸出剩餘第乙個人的名字。演算法思路 設定兩個佇列分別儲存男女,先依次入隊,只有兩個隊不空則不斷出隊配合,迴圈結束後,輸出非空隊的對頭元素。首先定義乙個人的結構體 typedef s...
佇列 舞伴問題
實驗要求 假設在週末舞會上,男士們和女士們進入舞廳時,各自排成一隊。跳舞開始時,依次從男隊和女隊的隊頭上各出一人配成舞伴。若兩隊初始人數不相同,則較長的那一隊中未配對者等待下一輪舞曲。現要求寫一演算法模擬上述舞伴配對問題。實驗提示 先入隊的男士或女士亦先出隊配成舞伴。因此該問題具體有典型的先進先出特...
資料結構之舞伴配對問題
有多個男生和女生,要求為男女生進行選舞伴的配對,輸出的結果根據自己的設計而定,我制定的問題是,輸入乙個數字 代表第幾支舞曲 然後輸出在此曲中跳舞的男女生的配對情況。沒有用迴圈佇列,用的鏈隊。include using namespace std typedef struct person typed...