TWO STACK的STATUS問題 |
尚未結案
|
charse
一般會員 ![]() ![]() 發表:5 回覆:9 積分:7 註冊:2004-06-07 發送簡訊給我 |
|
pwipwi
版主 ![]() ![]() ![]() ![]() ![]() 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
|
charse
一般會員 ![]() ![]() 發表:5 回覆:9 積分:7 註冊:2004-06-07 發送簡訊給我 |
|
yyu10
中階會員 ![]() ![]() ![]() 發表:9 回覆:99 積分:96 註冊:2005-02-18 發送簡訊給我 |
#Status = Sigma(P(n, k)), k from 0 to n, where P(n, k) = n!/(n-k)!. 1. n = 1
#status = P(1, 0) + P(1, 1) = 2
Stack A: (Empty), (1) 2. n = 2
#status = P(2, 0) + P(2, 1) + P(2, 2) = 1 + 2 + 2 = 5
Stack A: (Empty), (1), (2), (1, 2), (2, 1) 3. n = 3
#status = P(3, 0) + ... + P(3, 3) = 1 + 3 + 6 + 6 = 14
Stack A: (Empty), (1), (2), (3), (1, 2), (1, 3), (2, 3), (2, 1), (3, 1), (3, 2) (1, 2, 3), (1, 3, 2), ...4. 从1到n中随意挑选i个数字得到一个排列: K1, K2, ..., Ki, 通过下面的算法可以让这个排列出现在 Stack A中(Bottom(K1) -> Top(Ki)). For p = i downto 1 do begin a. 将在Kp之上的数字从A->B. b. 将Kp从A->C. c. 将B中的数字全部推回A, B->A. end; 至此, 排列Ki, ..., K2, k1出现在C中. 将A中剩余的数字, 如果有的话, 全部推入B中. 将C中的数字全部推回A中, 得到排列 K1, K2, ..., Kn.上面的算法可以使由1到n数字组成的任意排列出现在Stack A中, 所有排列的总数, 即Stack A所有可能的status数是 i #排列(即, #Status) 0 P(n, 0) = 1 (ie. empty) 1 P(n, 1) = n 2 P(n, 2) = n!/(n-2)! ... n P(n, n) = n!/(n-n)! = n! 加起来总和是 .... (见上).. _________________________ Programming is a passion 發表人 - yyu10 於 2005/04/01 10:01:12 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |