2012-11-24 25 views
0

假设爱丽丝已经挑选出三个不同的整数并将它们按随机顺序放入一个堆栈S中。写一段简短的,直线的伪码(没有循环或递归),只使用一个比较和一个变量x,但保证2/3的概率,在这段代码结束时,变量x将存储最大的爱丽丝的三个整数。争辩为什么你的方法是正确的。关于Java如何在java上编写伪代码来解决这个问题?

数据结构

+1

为什么要使用伪代码而不是实际的代码? –

+0

他能做什么,这就是这项任务所说:) –

+0

这是一个问题,我需要在伪代码上写解决方案 – Maen

回答

4
x = S.pop() 
return max(S.pop(), x) 

解释:

我得到了S堆栈[A,B,C]

x = S.pop() // x points to A 
return max(S.pop(), x) // compares B to A 

一旦我知道,最大的从B处返回A有一种可能性,即最大整数不在这两个整数(B和A)之间,即C 所以..我有两种可能性, - > 2/3

+0

阅读解释,你会看到它的正确 – thiagoh

+0

这不是我想所有的整数! – Maen

+0

@thiagoh ..现在它是有道理的。这就是为什么解释应该总是先添加。 +1的答案虽然。 –