ࡱ>   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntryPageMakerd  (^aa3XXC1'MP2(6i֔88 88 hL   kZ 4&@ } @ Pd 0  @@ L  & ^U N & &4   J $7 MS  B@ & >  ; G3Ld 26 kZ 3L  1 @ @  @   @} .+@RTFJ=C:\INSTALL\NEW\cd-pasico\BOOKS\SHEN\druk\ 2.rtf>1'@1')1  9߿ A9߿ AEPSON Stylus COLOR 300EPSON Stylus COLOR 300LPT1:@@xGMMd(xKdddContents^tIndex ,^>;^>^=.^>, C:\PM65\RSRC\USENGLSHxA99ddp- p-  db9߿ ..--__ pȴP\ )arȴ kL޶H޶`dd޶Ԉpk d)arȴln`])ar L`])arp- p-  pȴP\ )arȴ kL޶H޶`dd޶Ԉpk d)arȴln`])ar L`])arp- p-  pȴP\ )arȴ kL޶H޶`dd޶Ԉpk d)arȴln`])ar L`])arp- p-  pȴP\ )arȴ kL޶H޶`dd޶Ԉpk d)arȴln`])ar L`])arp- p-  pȴP\ )arȴ kL޶H޶`dd޶Ԉpk d)arȴln`])ar L`])arp- p-  pȴP\ )arȴ kL޶H޶`dd޶Ԉpk d)arȴln`])ar L`])arp- p-  pȴP\ )arȴ kL޶H޶`dd޶Ԉpk d)arȴln`])ar L`])arp- p-  pȴP\ )arȴ kL޶H޶`dd޶Ԉpk d)arȴln`])ar L`])arp- p- !*+,-./!012345!6789:;!<=>?@A!BCDEFG!HIJKLM!NOPQRS! TUVWXY! Z[\]^_! `abcde! fghijk! lmnopq!rstuvw!xyz{|}!~!Arial Cyr"$Times New Roman$Arial"$(xKdddxGMMdBody text(xKddddGMMdCaption(xKdddxGMMdHanging indentU(xKddd,GMMdHeadlineU(xKdddGMMdSubhead 1U(xKdddxGMMdSubhead 2 (xKdddxGMMdNormal NoneRegistrationPaperBlackRedGreenBlueCyanMagentaYellowdDAdobe Compatibility CMSAdobe Compatibility CMSPageMaker 5.0 RGB DAdobe Compatibility CMS Adobe Compatibility CMSPageMaker 5.0 CMYKDefaultETIsBLDBDocument MasterpȴP\ )arȴ kL޶H޶`dd޶Ԉpk d)arȴln`])ar L`])arp- p- Document MasterpȴP\ )arȴ kL޶H޶`dd޶Ԉpk d)arȴln`])ar L`])arp- p- F?81-8q3Y%%3Y%%x3Y%%3Y%%3Y%% 3Y%%3Y%%3Y%% V 3Y%% 3Y%% Q3Y%% 3Y%% 3Y%%.+Y@ @ ,@ Y@YA@Y*@ Y@Y%@ Y@YA@Y@4Y@YA@HYA@YA@tYA@YA@HYA@<Y@Y@Y)@@ Y@Y/@ Y!@Y4@8Y@Y @Y@YA@YA@YA@YA@YA@\YA@|YA@xYA@YA@Y @HY@Y@Y&@Y@Y @Y*@x Y@xY#@ Y@Y @Y@YA@YA@Y+@H Y@&Y@YA@|YA@YA@Y @DY@Y;@Y@YA@Y:@Y@YA@XY3@Y@Y@Y@LY@YA@ YA@hY@Y@YA@,YA@`YA@,YA@YA@YA@DYA@$YA@@YA@\YA@YA@YA@YA@Y2@Y@Y1@Y@Y-@h Y @@Y@@tY@Y @Y@Y@Y @<Y&@Y.@@ Y @Y@Y@&Y6@, Y@Y@Y>@Y@YA@$Y@4Y@YA@YA@Y@Y@Y@Y@YA@Y@Y@YA@YA@YA@YA@YA@YA@YA@YA@YA@tY8@YA@,YA@ YA@YA@ YA@$YA@Y @Y@Y)@ Y*@X Y@Y@YA@pYA@TYA@YA@ Y@Y@Y@@Y@@lY@YA@,Y#@ Y@&Y@Y@Y5@, Y@DY @Y2@ Y@Y!@Y@Y @Y@@Y<@Y@dY)@T Y@Y @Y'@ Y@Y @Y@YA@YA@YA@Y"@4 Y@YA@YA@$Y2@\Y@YA@YA@YA@\YA@Y8@Y@Y@Y*@$ Y@Y @Y.@ Y@Y#@ Y@Y @Y@YA@0YA@YA@YA@Y @Y@&Y@YA@YA@HY6@Y@YA@lYA@Y@ Y@YA@4YA@YA@Y@Y@YA@Y;@Y@Y@\Y@YA@(YA@YA@Y%@ Y@YA@4YA@lYA@YA@Y7@YA@8YA@YA@xYA@Y%@ Y@Y@Y6@ Y@Y @Y.@H Y@Y@Y#@Y@Y @Y2@ Y%@Y@Y @Y@ Y@&Y@YA@YA@YA@Y@YA@YA@4YA@ Y @HY@YA@(YA@Y&@ YA@tYA@YA@YA@Y/@Y@YA@(YA@Y1@XYA@`YA@YA@Y @Y@Y@Y*@ Y@YA@tYA@Y(@@ Y@YA@YA@Y9@Y@YA@YA@YA@8YA@<YA@YA@YA@PYA@PYA@YA@Y,@4 YA@Y@&YA@lYA@$YA@YA@@YA@ YA@PYA@YA@YA@YA@,Y>@xYA@YA@Y"@x Y@Y?@Y@YA@YA@Y@8 Y@Y;@Y@\Y @Y@Y:@l Y@dY @4Y@Y1@ Y@Y@Y@`Y @Y@Y@,Y@Y @Y@Y@YA@YA@`Y*@ YA@<Y,@ Y@Y,@ Y@YA@YA@Y@&Y@Y@Y(@ Y6@H Y@Y&@ Y@Y/@ Y@YA@XYA@lYA@YA@Y)@ Y@YA@YA@XYA@YA@ YA@Y@Y@Y@Y@Y5@ Y@YA@YA@lY@,Y@Y!@0Y!@0Y@Y"@Y"@Y@Y@Y@Y!@Y!@Y!@Y@Y"@Y"@Y"@Y@YA@XYA@ YA@YA@@Y@&YA@YA@@YA@Y@0Y@Y!@Y!@Y!@Y@Y"@Y"@Y"@Y@YA@Y3@Y@YA@YA@YA@`YA@Y7@0Y@YA@YA@YA@YA@YA@\YA@YA@YA@8YA@DYA@YA@YA@TYA@YA@YA@YA@YA@YA@Y@YA@YA@YA@|YA@lYA@YA@YA@YA@Y?@|Y@&YA@`YA@Y@Y@Y@Y@Y@\Y-@ Y:@Y,@ Y-@ Y@Y@TY@|Y@hY @Y@|Y@Y @Y@Y@Y@TY@@4Y@Y @Y@Y@Y@8Y@Y@Y @Y@Y@TY(@ Y6@ Y @Y @\Y5@D Y3@@ Y@Y @Y@Y>@@Y@Y@Y"@Y@dY @\Y@|Y@|Y@&Y@lY@XY6@Y#@`Y@<Y@4Y@<Y@,Y#@Y@,Y @Y@Y@TY@Y@Y @Y@Y9@`Y+@ Y@Y@pY@<Y@Y@`Y@Y@Y@YA@YA@YA@YA@YA@YA@XYA@YA@pYA@YA@DYA@Y0@Y@YA@YA@YA@Y@(Y@YA@TYA@Y1@pYA@YA@Y@&Y@0Y@ Y@Y*@XYA@YA@ YA@YA@YA@YA@hYA@tYA@Y/@Y@Y@4Y-@ Y@4Y<@Y:@tY9@Y@Y @4Y@Y5@Y,@ Y7@LY7@ Y2@ Y@Y@Y@lY@ Y@Y@Y@Y@Y"@Y @Y@Y @Y9@Y @Y@Y @pY@Y@Y@ Y@Y@@Y @Y@&Y#@Y @8Y @Y@YA@YA@YA@Y9@XY@YA@Y)@t Y@YA@YA@TY@Y@YA@Y(@ Y@YA@dYA@Y@Y@Y@Y@YA@YA@dYA@<Y8@Y@Y.@p Y:@4Y@YA@Y*@x Y@Y@Y@YA@YA@|YA@|YA@YA@Y4@YA@tY @Y@Y9@Y@YA@Y@&Y@8YA@YA@XY@YA@xYA@YA@YA@YA@lYA@PYA@xYA@LYA@0YA@hY@Y@Y=@Y @Y@Y4@Y@YA@8YA@YA@YA@dY6@Y@YA@YA@YA@tYA@YA@Y@$ YA@lYA@PYA@YA@Y'@ YA@<YA@Y@ Y@Y@Y @| 2. . , . 2.1. . 2.1.1. k 1..n. . ( a b, s s , (s+1)- a ). - <1, 1, ..., 1>, - . x[1]...x[k]. ...x[1]...x[k] 1 ... x ...last[1]...last[k] n while x <> last do begin | ...x := x | ... x end; , x - . , s , (s+1)- - . , x[s+1] n. s ( - ). x[s+1] 1. , , , , n ( , x<>last), 1, 1. p:=k; while not (x[p] < n) do begin | p := p-1; end; {x[p] < n, x[p+1] =...= x[k] = n} x[p] := x[p] + 1; for i := p+1 to k do begin | x[i]:=1; end; . 1 n, 0 n-1, 1 n- . 2.1.2. x <> last. , l l <=> x - . 2.1.3. {1...k}. . - k. 2.1.4. k , i- i. 2.2. . 2.2.1. 1..n ( - n, 1..n ). . x[1],..., x[n] . ( <1 2...n>, - .) - : k- , ? : - - ( k). - k, , . . k, x[k] < x[k+1] > ... > x[n]. x[k] - , . . x[k+1], ..., x[n] , . x[k] , - k+1, ..., n , , . , . . { <> .} k:=n-1; { k : x[k+1] >...> x[n]} while x[k] > x[k+1] do begin | k:=k-1; end; {x[k] < x[k+1] > ... > x[n]} t:=k+1; {t <=n, x[k+1] > ... > x[t] > x[k]} while (t < n) and (x[t+1] > x[k]) do begin | t:=t+1; end; {x[k+1] > ... > x[t] > x[k] > x[t+1] > ... > x[n]} ... x[k] x[t] {x[k+1] > ... > x[n]} ... x[k+1] ... x[n] . : t = n, x[t+1] . 2.2.2. - , , - . 2.3. . 2.3.1. k- {1..n}. . - x[1]..x[n] n, k . ( .) - (. ). - - , , k - , ( k - ). , - n . s- - , ? x[s] 0 1, [s] 1 0. , [s] - , . , [s+1] = 1 ( [s] ). s, [s]=0, x[s+1]=1; ______________________ x |________|0|1...1|0...0| s [s+1] , . [s] 1, , - , . . , . : 0...01...1 (n-k , k ) 1...10...0 (k , n-k ) [1]...x[n] - (, ): s := n - 1; while not ((x[s]=0) and (x[s+1]=1)) do begin | s := s - 1; end; {s - , 0 1} num:=0; for k := s to n do begin | num := num + x[k]; end; {num - x[s]...x[n], ( - ), . . (n-s+1) - num} x[s]:=1; for k := s+1 to n-num+1 do begin | x[k] := 0; end; for k := n-num+2 to n do begin | x[k]:=1; end; - . , . . 2.3.2. - k 1..n . (: n=5, k=2 12 13 14 15 23 24 25 34 35 45.) . 1, 2, ..., k; - (n-k+1),..., (n-1), n. s- ? : n-k+s. s- 1. : s:=n; while not (x[s] < n-k+s) do begin | s:=s-1; end; {s - , }; x[s] := x[s]+1; for i := s+1 to n do begin | x[i] := x[i-1]+1; end; 2.3.3. k- - {1..n} k, - . ( : 21 31 32 41 42 43 51 52 53 54.) ? . s, [s]-x[s+1]>1. ( s , s = 0.) x [s+1] 1, - (x[t] = k+1-t t>s). 2.3.4. , - ( , ). 2.3.5. (, - ) {1..k} {1..n} (- , k <= n). k . . . 2.4. . 2.4.1. - n (, , ). (: n=4, - 1+1+1+1, 2+1+1, 2+2, 3+1, 4.) . , (1) , (2) - . x[1]...x[n], k. x[1]=...=x[n]=1, k=n, x[1]=n, k=1. x[s] ? -, x[s-1] > x[s] s = 1. -, s ( s - ). s, - . s := k - 1; while not ((s=1) or (x[s-1] > x[s])) do begin | s := s-1; end; {s - } x [s] := x[s] + 1; sum := 0; for i := s+1 to k do begin | sum := sum + x[i]; end; {sum - , x[s]} for i := 1 to sum-1 do begin | x [s+i] := 1; end; k := s+sum-1; 2.4.2. - , , - ( n=4, , 4, 3+1, 2+2, 2+1+1, 1+1+1+1). . , 1; , 1, - ( , , - ). 2.4.3. - , . n=4: 1+1+1+1, 1+1+2, 1+3, 2+2, 4; . , - ; 1 , , , , , , . 2.4.4. - , , - . n=4: 4, 2+2, 1+3, 1+1+2, 1+1+1+1. . x[s] , - , s = 1 x[s-1] < x[s]. x[s] , . , , x[s-1] <= ( (x[s]/2)) s=1. 2.5. . , . . 2.5.1. n 1..k , - , , 1. . n k. . , - 1..k - n (s- s- ). , . . : , - ( ) , , ( ) . , , .. 1. n, 1...k. n = 1 . n > 1. , - , , . - , , k-1 , . , n-1 n-1 ; - n-1 k n. , x[1]...x[n], d[1]...d[n] +1 -1 (+1 , -1 - ). : x[1] =...= x[n] = 1; d[1] =...= d[n] = 1. (- , - - p). { , p := true, , p := false } i := n; while (i > 1) and | (((d[i]=1) and (x[i]=n)) or ((d[i]=-1) and (x[i]=1))) | do begin | i:=i-1; end; if (d[i]=1 and x[i]=n) or (d[i]=-1 and x[i]=1) | then begin {i=1} | p:=false; end else begin | p:=true; | x[i] := x[i] + d[i]; | for j := i+1 to n do begin | | d[j] := - d[j]; | end; end; . , . ( - .) 0 (2 n) - 1 - . , n = 3 : 000 001 010 011 100 101 110 111 , , , ( 2). , a[1], a[2],...,a[n] a[1], a[1] + a[2], a[2] + a[3],...,a[n-1] + a[n] ( 2). n=3 : 000 001 011 010 110 111 101 100. , - ( ). , 011...1 100...0, - - . . , - . - , , - . - 0, 1 (. . 180"). : 0 1 -> |_|_|_|_|*|*|*|*| <- ( ). , 90 : 0 0 1 1 0 1 0 1 _ _ _ _ |_|_|_|_|*|*|*|*| |_|_|*|*|_|_|*|*| , 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 _ _ _ _ |_|_|_|_|*|*|*|*| |_|_|*|*|_|_|*|*| |_|*|_|*|_|*|_|*| 45 .. - , , : - , - , - - . . , ( , - ). 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 _ _ _ _ |_|_|_|_|*|*|*|*| |_|_|*|*|*|*|_|_| |_|*|*|_|_|*|*|_| - . 2.5.2. 1..n , () . , n = 3 - : 3.2 1 -> 2 3.1 -> 2.1 3 -> 1 2.3 -> 1.3 2 -> 3 1 2 ( ). . - y[1]..y[n] - , y[1] <= 0,..., y[n] <= n-1. - , , - . , - y[1]..y[n], y[i] - , i - i . . 1...n - 1..n-1 n, n . - , 0 n-1, . , y , - y - . , y[i] 1 i , - . - , - . (- i- i) , y, i- - , . y . i; - , i |> i ( - ), . : program test; | const n=...; | var | x: array [1..n] of 1..n; {} | inv_x: array [1..n] of 1..n; { } | y: array [1..n] of integer; {Y[i] < i} | d: array [1..n] of -1..1; {} | b: boolean; | | procedure print_x; | | var i: integer; | begin | | for i:=1 to n do begin | | | write (x[i], ); | | end; | | writeln; | end; | | procedure set_first;{ : y[i]=0 i} | | var i : integer; | begin | | for i := 1 to n do begin | | | x[i] := n + 1 - i; | | | inv_x[i] := n + 1 - i; | | | y[i]:=0; | | | d[i]:=1; | | end; | end; | | procedure move (var done : boolean); | | var i, j, pos1, pos2, val1, val2, tmp : integer; | begin | | i := n; | | while (i > 1) and (((d[i]=1) and (y[i]=i-1)) or | | | ((y[i]=-1) and (y[i]=0))) do begin | | | i := i-1; | | end; | | done := (i>1); | | { , } | | if done then begin | | | y[i] := y[i]+d[i]; | | | for j := i+1 to n do begin | | | | d[j] := -d[j]; | | | end; | | | pos1 := inv_x[i]; | | | val1 := i; | | | pos2 := pos1 + d[i]; | | | val2 := x[pos2]; | | | {pos1, pos2 - ; | | | val1, val2 - } | | | tmp := x[pos1]; | | | x[pos1] := x[pos2]; | | | x[pos2] := tmp; | | | tmp := inv_x[val1]; | | | inv_x[val1] := inv_x[val2]; | | | inv_x[val2] := tmp; | | end; | end; | begin | set_first; | print_x; | b := true; | { ; | b , - } | while b do begin | | move (b); | | if b then print_x; | end; end. 2.6. . . : - ( ). , , ( ). , ( - ) : , . . , . 2.6.1. 2n, - n n , - (.. ). . (1,1), (1,-1), , (0,0) (n,0), . , , -1 1. - 1, -1, 1, -1, ... - 1, 1, 1, ..., 1, -1, -1, ..., -1. ? - , -1 1. . - -1 1 , ( -1). -1 1, - : - , . : -1, , 1. : ... type array2n = array [1..2n] of integer; ... procedure get_next (var a: array2n; var last: Boolean); | { a , } | { ( last=false), last:=true} | var k, i, sum: integer; begin | k:=2*n; | {: a[k+1..2n] } | while a[k] = -1 do begin k:=k-1; end; | {k - , a[k]=1} | while (k>0) and (a[k] = 1) do begin k:=k-1; end; | {a[k] - -1, 1; | , k=0} | if k = 0 then begin | | last := true; | end else begin | | last := false; | | i:=0; sum:=0; | | {sum = a[1]+...+a[i]} | | while i<> k do begin | | | i:=i+1; sum:= sum+a[i]; | | end; | | {sum = a[1]+...+a[k]} | | a[k]:= 1; sum:= sum+2; | | { a[k] , sum=a[1]+...+a[k]} | | while k <> 2*n do begin | | | k:=k+1; | | | if sum > 0 then begin | | | | a[k]:=-1 | | | end else begin | | | | a[k]:=1; | | | end; | | | sum:= sum+a[k]; | | end; | | {k=n, sum=a[1]+...a[2n]=0} | end; end; 2.6.2. n . , . (, n = 4 5 - ((ab)c)d, (a(bc))d, (ab)(cd), a((bc)d), a(b(cd)).) . - . 2.6.3. 2n , 1 2n. n . 2.6.4. n- - , n - 2 . - , (backtracking). 2.7. . , . : C(n,k) - k- n- - , : C (n,0) = C (n,n) = 1 (n >= 1) C (n,k) = C (n-1,k-1) + C (n-1,k) (n > 1, 0 < k < n); n!/((k!)*(n-k)!). ( , - (n,k).) . 2.7.1 ( ). ( - 1988 .) P(n) - - n ( , 1+2 2+1 - ). n=0 P(n) = 1 ( ). P(n) n. . ( ) P(n): P(n) = P(n-1)+P(n-2)-P(n-5)-P(n-7)+P(n-12)+P(n-15) +... ( , (3*q*q-q)/2 (3*q*q+q)/2). - P(n), . R(n,k) ( n >= 0, k >= 0) n , k. ( R(0,k) 1 k >= 0.) , P(n) = R(n,n). n , k, - ( i). R(n,k) ( i 1 k) k , i. n k , i, - n - i , i ( i <= k). R(n,k) = i 1 k R(n-i,i) k <= n; R(n,k) = R(n,n) k >= n, R. 2.7.2 ( ). ( - 1989 ). 2n ( 0 9) - , n n . - . . ( ; - , , - .) : - , n n k (k = -9n,..., 9n). T(n, k) - - . . t, - n-1 k-t. , t - 10 - ( t), T(n,k) = t -9 9 (10-|t|) * T(n-1, k-t). ( , k-t .) &  @ kPGMMdk (xKdddk8dPC ..RTFWY  B  xY3xGMMd(xKdddY  B  xY4xGMMd(xKdddY  @ xY5xGMMd(xKdddY  @ xY6xGMMd(xKdddY  @ xY7xGMMd(xKdddY  @ xY8xGMMd(xKdddY  @ xY9xGMMd(xKdddY  @ Y10xGMMd(xKdddY  P Y11xGMMd(xKdddY  @ Y12xGMMd(xKdddY  @ Y13xGMMd(xKdddY  @ Y14xGMMd(xKdddY  @ Y15xGMMd(xKdddY  @ Y16xGMMd(xKdddY  @ Y17xGMMd(xKddd7-%S.N p-%2 U,u 7-%, p-m @ [ { p-%[ { 7-%[;+{ 7-%J-j p- % J j p-%A 2 7- % J-  7-%F.-N  p- % I   p- % [ {  7- % Zg*  @@ %%! +00*@3*((.@4.1t1@t/t/-x-z @   @ $D$   @     @   @  @     @    @      ! @! ! " " # @# # # @$ % @% % % & & @' ' ' ( @( ( ) ) * @* * + + , @, , , @- . @. . . / / @0 0 0 1 @1 1 2 2 3 @3 3 4 4 5 @5 5 5 @6 7 @7 7 7 8 8 @99;?@CGKP@TRoot EntryPageMakerd  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  (^aa3XXC1'MP2(6i֔8 88 88 hL   kZ 4&@ } @ Pd 0  @@ L  & ^U N & &4   J $7 MS  B@ & >  ; G3Ld 26 kZ 3L  1 @ @  @   @} .+@RTFJ=C:\INSTALL\NEW\cd-pasico\BOOKS\SHEN\druk\ 2.rtf>1'@1')1  9߿ A9߿ AEPSON Stylus COLOR 300EPSON Stylus COLOR 300LPT1:@@xGMMd(xKdddContents^tIndex ,^>;^>^=.^>, C:\PM65\RSRC\USENGLSHxA99ddp- p-  db9߿ ..--__ pȴP\ )arȴ kL޶H޶`dd޶Ԉpk d)arȴln`])ar L`])ar