现在的位置: 首页 > 综合 > 正文

145、有一次数学比赛 146 从尾到头输出链表

2018年05月02日 ⁄ 综合 ⁄ 共 1022字 ⁄ 字号 评论关闭

45、有一次数学比赛,共有 A,B 和 C 三道题目。所有人都至少解答出一道题目,总共有
25 人。在没有答出 A 的人中,答出 B 的人数是答出 C 的人数的两倍;单单答出 A 的人,
比其他答出 A 的人总数多 1;在所有只有答出一道题目的人当中,答出 B 和 C 的人数刚好

是一半。求只答出 B 的人数。


46、从尾到头输出链表
题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:
struct ListNode
{
int  m_nKey;
ListNode* m_pNext;
};
分析:这是一道很有意思的面试题。该题以及它的变体经常出现在各大公司的面试、笔试题

中。

解答:

设只答对A的人数为A,只答对AB的人数为AB,只答对AC的人数为AC,全部答对的人数为ABC,
只答对B的人数为B,只答对C的人数为C。由题意可列出四个等式:
(1)A+B+C+AB+AC+BC+ABC=25
(2)B+BC=2*(BC+C)
(3)A=AB+AC+ABC+1
(4)A=B+C

化简: 
==> 
(2)==> BC=B-2C 
(1)==> A+ B+C +AB+AC+ABC+ BC=25
==>  A+ A   +A-1      + B-2C=25
==>  3B+3C-1+ B-2C=25
==>  4B+C=26 
把第一个等式全都改为用B和C表示的等式,然后合并消除等等很简单的就得到了最终的等式:
4B+C=26
B=0      C=26   ==> A=26  ==>1不满足 
B=1      C=22   ==> A=23  ==>1不满足
B=2      C=18   ==> A=20  ==>1不满足 
B=3      C=14   ==> A=17  ==>1不满足 
B=4      C=10   ==> A=14  ==>1不满足 
B=5      C=6   ==> A=11  ==>1满足  BC=B-2C<0? 不满足
B=6      C=2   ==> A=8  ==>1满足  BC=B-2C=2   
所以A+ AB+AC+ABC+1 -1 +B+C+BC=8 +8 -1+8+2=25满足 

A=8 B=6 C=2

46、从尾到头输出链表
题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:
struct ListNode
{
int  m_nKey;
ListNode* m_pNext;
};
分析:这是一道很有意思的面试题。该题以及它的变体经常出现在各大公司的面试、笔试题
中。

同58  已实现:http://blog.csdn.net/u012605629/article/details/39967245

抱歉!评论已关闭.