(1)24個人做ABC三道菜,滿足如下條件:
- 每個人至少會做1道
- 沒有人會做3道
- 只會做A的是隻會做C的2倍
- 只會做C的是既會做A又會做B的3倍
- 會B的人中,只會做B的比其他人少1
- 不知一個人既會做A和B
解析:A∩B >1, 只會C的是A∩B的3倍,只會A的是隻會C的兩倍,而且 只會A +只會 C 要 <24 ,所以 只會A是12,只會C是6,A∩B是2,所以得到下圖:
所以 A∩C + B∩C + 只會B = 4,要把剩下的4人分配到這三個區域,因爲 只會B=A∩B + B∩C -1;所以:
如果只會B = 4 ,則不滿足條件;
如果只會B=3,則不滿足條件;
如果只會B = 2, 則 B ∩ C = 1,A ∩C = 1,所以會C的人爲 6 + 1 + 1 =8;
如果 只會B = 1,則 B∩ C = 0, A ∩ C = 3 ,則會C的人爲 6 + 0 + 3 =9.
(2)sizeof問題:union 要和 short 即2 對齊,所以是4
struct node{
char c[3];
short s;
};
union un{
char c[3];
short s;
};
(3)計算完全二叉樹葉子節點的數量,忘了倒數第二層 囧。。。
(4)由前序遍歷和中序遍歷構造後續遍歷
(4)消除字符串的空格,如果有多個空格則保留一個
(5)求線段的覆蓋,例如[1,9] 和 [5,10]兩條線段 ,則覆蓋了 10,求n條線段的覆蓋數,
如果多重覆蓋,則計算一次
(6)(a+b)*c*(d-e/f) 轉換成後綴表達式 :ab+c*def/-* ,注意運算優先級和結合行
總結:我了個叉 ,發現自己做題太粗心了,很多會做的看錯題,囧。。。