2012-11-24 63 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的答案雖然。 –