(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/-* ,注意运算优先级和结合行
总结:我了个叉 ,发现自己做题太粗心了,很多会做的看错题,囧。。。