首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

[]数据结构方面的证明题.多谢

2012-02-23 
[求助]数据结构方面的证明题.谢谢.试证明:若借助栈由输入序列12……n得到输出序列为P1P2……Pn(它是输出序列的

[求助]数据结构方面的证明题.谢谢.
试证明:若借助栈由输入序列1   2……n得到输出序列为P1   P2……Pn(它是输出序列的一个排列),则在输出序列中不可能出现这样的情形:存在着i <j <k使Pj <Pk <Pi.

[解决办法]
假设存在着i <j <k使Pj <Pk <Pi,因为原数列为1 2……n单增数列,又Pi> Pk,Pi> Pj,所以Pk,Pj必在范围1...Pi-1,同理,因为Pk> Pj,Pj必在1...Pk-1。
所以可得Pi,Pj,Pk在原数列的分布(能不能说显然~):1...Pj...Pk...Pi...n
要使得输出数列i <j <k,因为i最小,所以Pi应该最先出栈,由上知包含1...Pj...Pk的一个子集必须先入栈,以使得Pi能最先出栈;
此时,栈里1...Pj...Pk...只能为k先出栈,所以在序列中k <j
所以得:i <k <j,和条件矛盾。

热点排行