不写初中高级这种实验啦 直接上STL吧 如果有不懂的话可以看看STL容器,我直接给个百度百科的链接吧
聪明的学生(实验名称)
一、实验目的
掌握递归思想,将“聪明的学生”问题抽象出递归并加以实现。
二、实验内容
(1)将“聪明的学生”问题抽象为递归算法。
(2)键盘输入三个数字,要求输出谁能猜出,并输出递归过程的中间数据。 (3)给出测试用例:3,8,5 的输出结果。
三、提示参考
提示 1:总是帖着最大数的那个人猜出了自己头上的数。
提示 2:将“聪明的学生”问题抽象为递归思想,特别注意递归程序的两个 方面是递归出口和迭代步骤。
问题分析:依题可知,每个学生都能知道其他另外两个学生的数字,但不清楚自己数字。假设,我们以 1,2,3,作为例子来分析。A 只有两种情况,一种是(21),另外一种是(2+1),但是 A 自己不能确定是哪一种情况,所以 A 猜不出来。 再来看看 B,两种情况是(1+3)或者(3-1),但是 B 仍然不能确定,最后是 C, 两种情况是(1+2)或者(2-1),但是 C 是可以排除(2-1)这种情况的,因为如 果 C 是(2-1),那么 B 是在看到 A 是 1,C 是 1 的情况下,B 可以猜出来自己是 2,但是 B 没有猜出来,故而 C 可以排除是( 2-1)这种情况,因而 C 只能是( 2+1), 也就是 3。可以分析总结出最大的数字总会最先猜出来,是因为只有最大的数字 是可以排除相减的情况的,因为如果它是相减得到的话,前面一定有人可以猜出 来。 现在,我们将问题抽象。即 A,B,C 三个学生,他们头上的数字分别为 x1,x2,x3。 从上述结论可知,最大的数总会被最先猜出来。不妨假设,B 是最先猜出来的学 生,即 x2 = x1+x3.而 B 能排除|x1-x3|这种可能性的依据有两个,一是 x1=x3,那 么 B 只能是 x1+x3,因为三个都是正整数。另外一种依据是假设在 x2=|x1-x3|的 前提下,那么在前面的提问中,A 或者 C 已经先猜出来了,而因为他们没有猜