舞伴問題
假設在週末舞會上,男士們和女士們進入舞廳時,各自排成一隊,男女人數不一定相等。
跳舞開始時,依次從男隊和女隊的 隊首上各出一人配成舞伴。 舞曲結束後,男女各自入隊。
現在用小寫字母表示男士,大寫字母表示女士,
試輸入乙個字串,按照大小寫將男女歸入兩個佇列,
試寫出當所有人都至少跳舞一次時,舞伴的組合情況。
測試樣例格式說明:
[鍵盤輸入]
用字串表示的當天舞者序列;
[正確輸出]
舞伴組合情況
測試樣例:
[第一組自測資料]
[鍵盤輸入]
abcdefgih
[正確輸出]
a - d
b - g
c - h
e - d
f - g
i - h
[第二組自測資料]
[鍵盤輸入]
abcdef
[正確輸出]
a - b
c - d
a - e
c - f
*/
/*int 型別陣列也可以儲存讀入的字元char型別,也可將int修改為char*/
#define maxlen 100
#define empty_queue_error -9999999
typedef
int elemtype;
typedef
struct
intqueue;
/*初始化(調整兩個位置標識量)*/
void
initqueue
(intqueue* pqueue)
// 指標型別作為形參,某個佇列例項的位址
/*對頭元素出佇列*/
intdequeue
(intqueue* pqueue)
return empty_queue_error;
}/*入佇列
將某資料元素x入佇列,成功返回1,失敗返回0。*/
intenqueue
(intqueue* pqueue, elemtype x)
return1;
}/*(9)求取佇列長度(重要)
返回佇列中元素的個數
*/int
queuelen
(intqueue* q)
void
dance_match()
else
if(c >=
'a'&& c <=
'z')
} lenmale =
queuelen
(&qmale)
; lenfemale =
queuelen
(&qfemale)
;printf
("輸出配對結果:\n");
while
(lenfemale || lenmale)
//若雙方均為0,就不再進入迴圈了
//if
/*lenmale與lenfemale一方為0,另一方非0*/
elseif(
!lenmale && lenfemale)
/*如果男士先完成遍歷*/
資料結構之舞伴配對問題
有多個男生和女生,要求為男女生進行選舞伴的配對,輸出的結果根據自己的設計而定,我制定的問題是,輸入乙個數字 代表第幾支舞曲 然後輸出在此曲中跳舞的男女生的配對情況。沒有用迴圈佇列,用的鏈隊。include using namespace std typedef struct person typed...
佇列 舞伴問題
所有男士女士存放在陣列dancer中,按照性別分為兩個佇列,之後每個佇列各出頭元素進行配對,配對時輸出出對人姓名,最後再輸出剩餘第乙個人的名字。演算法思路 設定兩個佇列分別儲存男女,先依次入隊,只有兩個隊不空則不斷出隊配合,迴圈結束後,輸出非空隊的對頭元素。首先定義乙個人的結構體 typedef s...
佇列 舞伴問題
實驗要求 假設在週末舞會上,男士們和女士們進入舞廳時,各自排成一隊。跳舞開始時,依次從男隊和女隊的隊頭上各出一人配成舞伴。若兩隊初始人數不相同,則較長的那一隊中未配對者等待下一輪舞曲。現要求寫一演算法模擬上述舞伴配對問題。實驗提示 先入隊的男士或女士亦先出隊配成舞伴。因此該問題具體有典型的先進先出特...