数据结构中n个数据依次入栈,出栈顺序有多少种?谁能帮忙证明下 有n个入栈元素依次进栈,则有多少种出栈序列
N\u4e2a\u6570\u4f9d\u6b21\u5165\u6808\uff0c\u51fa\u6808\u987a\u5e8f\u6709\u591a\u5c11\u79cd\u5047\u8bbe\u5165\u6808n\u4e2a\u6570\uff0c\u51fa\u6808\u987a\u5e8f\u67091/(n+1)*Cn/2n; Cn/2n\u8868\u793a\u6392\u5217\u7ec4\u5408\uff0cn\u5728\u4e0a\uff0c2n\u5728\u4e0b
\u4f60\u7684\u95ee\u9898\u7684\u7b54\u6848\u4e3a2\u7684n-1\u6b21\u65b9\u4e2a\u3002
\u6839\u636e\u4f60\u7684\u95ee\u9898\u53ef\u4ee5\u8f6c\u6362\u4e3a\uff1a1,2,3,4\uff0cn\u3002\u8fd9n\u4e2a\u6570\u5b57\u4f9d\u6b21\u6309\u4ece\u5c0f\u5230\u5927\u7684\u987a\u5e8f\u5165\u6808\uff0c\u90a3\u51fa\u6765\u7684\u5e8f\u5217\u6709\u591a\u5c11\u79cd\u3002
\u5df2\u7ecf\u9a8c\u8bc1
\u5f53n=1\u65f6\uff0c\u67091\u79cd\uff0c
\u5f53n=2\u65f6\uff0c\u67092\u79cd\uff0c
\u5f53n=3\u65f6\uff0c\u67094\u79cd\uff0c
\u5f53n=4\u65f6\uff0c\u67098\u79cd,
\u6839\u636e\u89c4\u5f8b\u53ef\u4ee5\u63a8\u7b97\u51fa\uff1ay\uff08n\uff09=2^(n-1)\u3002
\u8bc1\u660e\uff1a\u5f53n\u22651\u65f6
\u901a\u8fc7\u89c2\u5bdf\u53ef\u4ee5\u5f97\u5230
\u5f0f1\uff1ay(n)=y\uff08n-1\uff09+y\uff08n-2\uff09+y\uff08n-3\uff09+.+Y\uff081\uff09+1
\u5f0f2\uff1ay(n-1)=y\uff08n-2\uff09+y\uff08n-3\uff09+.+Y\uff081\uff09+1
\u90a3\u4e48y(n)-y(n-1)=y\uff08n-1\uff09
\u4e5f\u5c31\u662fy(n)=2*y\uff08n-1\uff09
\u90a3\u4e48y\uff08n\uff09=2^(n-1)*y(1),
\u56e0\u4e3ay\uff081\uff09=1\uff0c\u90a3\u4e48y\uff08n\uff09=2^(n-1)\u3002
F(n)=∑(F(n-1-k)*Fk);其中k从0到n-1
已知F0=1,
F1=F0*F0=1
F2=F1*F0+F0*F1=2
F3=F2*F0+F1*F1+F0*F2=5
……
证明的话,对于n个数据,我只看第一个数据的出入栈顺序:
第一个数据入栈到出栈之间可以包含0,1,2…n-1个数据的出入栈,
相应的,第一个数据出栈之后,还有n-1,n-2…2,1,0个数据需要出入栈
根据组合数学里面的乘法原理,需要把第一个数据出栈前后的种数相乘
根据加法原理,需要把第一个数据出入栈的n种方式全加起来
于是就得到了那个递推公式,不过,要找出一个直接计算Fn的公式似乎不太好办。
绛旓細1.鍏14绉嶅簭鍒 2.璁$畻鍏紡涓: C(2n,n)/(n+1)锛宯鏍鎿嶄綔鐨勫厓绱涓暟銆侰(2n,n)鏄滅粍鍚堚濈锛岃〃绀轰粠2n涓鍏冪礌涓棤搴忋佷笉閲嶅閫夊彇n涓厓绱犵殑缁勫悎涓暟銆傛渚涓璶=4锛屽垯搴忓垪鏁颁负锛氾紙2*4)!/(4!*4!)/(4+1)=14 3.搴忓垪涓猴細1鍏-->2鍏-->3鍏-->4鍏-->4鍑-->3鍑-->2鍑-->1...
绛旓細鏈澶у閲忔槸n锛浣犱笅鏍囧拰瀹归噺鎼炰笉娓呫備笅鏍囨槸浠0寮濮嬬殑锛屽閲忔槸浠1寮鏁拌鏁扮殑锛屽綋鏈澶у閲忔槸n鏃讹紝瀵瑰簲鐨勬渶澶т笅鏍囨槸n-1銆
绛旓細鍦ㄨ绠楁満绋嬪簭涓紝鏍堝父鐢ㄤ簬鍑芥暟璋冪敤鍫嗘爤銆侀掑綊鎿嶄綔锛屼互鍙婁复鏃跺瓨鍌ㄥ嚱鏁板弬鏁板拰杩斿洖鍦板潃銆備緥濡傦紝褰撲綘璋冪敤涓涓嚱鏁帮紝鍙傛暟鍜岃繑鍥炲湴鍧浼氳鍘鍏ユ爤涓紝鍑芥暟鎵ц瀹屾瘯鍚庯紝杩欎簺鏁版嵁鎸夌収鍘嬪叆鐨勯『搴渚濇鍑烘爤銆備笌鍫嗙浉姣旓紝鏍堝湪鎿嶄綔绯荤粺灞傞潰鏇村儚鈥滅幇鐐圭幇鍚冣濈殑妯″紡锛屾搷浣滅畝鍗曚絾鑷敱搴﹁緝灏忥紱鑰屽湪鏁版嵁缁撴瀯涓婏紝鍫嗛氬父鎸囩殑鏄...
绛旓細C銆n-i+1銆傛爤鐨勬帓鍒楅伒寰厛杩涘悗锛堝嵆鍚庤繘鍏堝嚭锛夊嚭鐨勫師鍒欙紝鍥犱负P1鏄痭锛屾槸鍑烘爤鐨勭涓涓暟瀛椼傝鏄庡湪n涔嬪墠杩涙爤鐨鏁板瓧閮芥病鏈夊嚭鏍堬紝鎵浠ヨ繖涓『搴忔槸纭畾鐨勶紝杩樺彲浠ョ煡閬擄紝鏈鍚庡嚭鏍堢殑涓瀹氭槸鏁板瓧1锛屼篃灏辨槸Pn锛屼唬鍏ヨ繖涓紡瀛愩傛爤浣滀负涓绉鏁版嵁缁撴瀯锛屾槸涓绉嶅彧鑳藉湪涓绔繘琛屾彃鍏ュ拰鍒犻櫎鎿嶄綔鐨勭壒娈婄嚎鎬ц〃銆傚畠鎸夌収鍏堣繘...
绛旓細--- 瀵逛笉璧枫傜湅閿欓鐩簡锛屽懙鍛点傜1棰樼殑绛旀鏄疍,娌℃敞鎰忚鐨勬槸鏀硅繘鐨勭畻娉曘--- 鍑烘爤搴忓垪缁熻鍏紡鍦ㄤ弗鐨勪功閲屾病鏈夛紝浣嗘槸鍙互鎺ㄥ锛氶棶棰橈細缂栧彿涓 1 鍒 n 鐨 n 涓鍏冪礌锛岄『搴忕殑杩涘叆涓涓鏍堬紝鍒欏彲鑳界殑鍑烘爤搴忓垪鏈夊灏戠锛熷闂鐨勮浆鍖栦笌鎬濊冿細n 涓厓绱犺繘鏍堝拰鍑烘爤锛屾诲叡瑕佺粡鍘 n 娆¤繘鏍鍜 n 娆...
绛旓細鏁呮爤闀縯op-1锛屾爤婊℃潯浠讹細top==N-N=0 銆傚洜涓虹敤涓涓暱搴︿负n鐨勬暟缁勯『搴忓偍瀛樹竴涓爤 鐒惰屾暟缁勬槸浠0~n-1 鏍堢┖涓簍op==n 閭d箞鏍堟弧涓簍op==1銆倀鏁扮粍闀垮害鍥哄畾涓簄锛屽垯鍙瓨鍌╪涓厓绱狅紝top=n琛ㄧず鏍堢┖锛屽悜鏍堜腑鎻掑叆涓涓厓绱犲悗锛宼op-1=n-1锛宯涓鍏冪礌瀛樺偍瀹屼簡灏辨弧鏍堜簡锛宼op鐨勫煎氨绛変簬0浜嗐
绛旓細鏍堜綔涓轰竴绉鏁版嵁缁撴瀯锛鏄竴绉嶅彧鑳藉湪涓绔繘琛屾彃鍏ュ拰鍒犻櫎鎿嶄綔鐨勭壒娈婄嚎鎬ц〃銆傚畠鎸夌収鍚庤繘鍏堝嚭鐨勫師鍒欏瓨鍌ㄦ暟鎹紝鍏堣繘鍏ョ殑鏁版嵁琚帇鍏ユ爤搴曪紝鏈鍚庣殑鏁版嵁鍦ㄦ爤椤讹紝闇瑕佽鏁版嵁鐨勬椂鍊欎粠鏍堥《寮濮嬪脊鍑烘暟鎹紝鏈鍚庝竴涓暟鎹琚涓涓鍑烘潵銆傛爤鍏锋湁璁板繂浣滅敤锛屽鏍堢殑鎻掑叆涓庡垹闄ゆ搷浣滀腑锛屼笉闇瑕佹敼鍙樻爤搴曟寚閽堛傛爤鏄厑璁稿湪鍚屼竴绔...
绛旓細濡備笅鏄竴涓ず渚嬶紝鍋囪鏍堟槸绌虹殑锛屽厓绱5鍜3琚渚濇鍏ユ爤锛姝ゆ椂鏍堥《鏄3銆傝繖涓爤鍙互琚О涓篖IFO锛堝悗杩涘厛鍑猴級鏍堛倈 -- 鏍堥《 | 3 -- 鏍堥《 | 3 | 5 -- 鏍堥《 鍑烘爤鏄寚浠庢爤涓Щ闄ゆ爤椤跺厓绱狅紝瀹冨彲浠ヨ鐢ㄦ潵鑾峰彇鏈鍚庤繘鍏ョ殑鍏冪礌銆傚嚭鏍堟搷浣滄椂锛屾爤鎸囬拡浼氭寚鍚戜笅涓涓厓绱狅紝鍥犳鏍堢殑澶у皬鍑1銆
绛旓細鏍堢殑鍏稿瀷鎿嶄綔鍖呮嫭鍏ユ爤锛圥USH锛屽嵆鍏冪礌浠庡簳绔繘鍏ワ級鍜屽嚭鏍堬紙POP锛屽嵆鍏冪礌浠庨《绔Щ闄わ級銆備緥濡傦紝濡傛灉鎸夌収瀛楁瘝椤哄簭A銆丅銆丆銆丏渚濇鍏ユ爤锛閭d箞鍑烘爤鐨勯『搴忓皢涓篋銆丆銆丅銆丄锛屼綋鐜颁簡鍏堣繘鍚庡嚭鐨勮鍒欍傛荤粨鏉ヨ锛屾爤鐨勬搷浣滈『搴忛伒寰竴涓畝鍗曞師鍒欙細鍏ユ爤閬靛惊鍚庤繘鍏堝嚭锛岃屽嚭鏍堝垯鏄厛鍏ュ厛鍑恒傝繖浣垮緱鏍堝湪鏁版嵁澶勭悊杩囩▼涓...
绛旓細杩欎簺鑱旂郴鍙互閫氳繃瀹氫箟鐩稿叧鐨勫嚱鏁版潵缁欏嚭銆傗濅粬灏嗘暟鎹璞★紙dataobject锛夊畾涔変负鈥滀竴涓暟鎹璞℃槸瀹炰緥鎴栧肩殑闆嗗悎鈥濄 CliffordA.Shaffer鍦ㄣ婃暟鎹粨鏋勪笌绠楁硶鍒嗘瀽銆嬩竴涔︿腑鐨勫畾涔夋槸锛氣滄暟鎹粨鏋勬槸ADT锛堟娊璞℃暟鎹被鍨婣bstractDataType锛夌殑鐗╃悊瀹炵幇銆傗 LobertL.Kruse鍦ㄣ婃暟鎹粨鏋勪笌绋嬪簭璁捐銆嬩竴涔︿腑锛屽皢涓涓暟鎹粨...