好像有些小题大做,不过用我的脑袋实在是解不出答案。
4 A' N6 `; O: @1 C! @/ X8 @9 e8 K: V0 n0 ]* r/ X9 u
谜题:祖父的箱子
1 ~2 [9 c4 Q ^3 x' o: X# h3 P$ a
( y& R0 }" Z* [, h' {8 w5 s要求调到中间为红心
* a. b# r4 T5 L, D6 l
: V8 F3 @+ j; g. |两边为方块 9 K/ z/ ?9 o: ?9 [7 l
7 K8 e0 k& B. \' X% V9 X
分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。 . y' ^# Q5 V+ q7 z
1 d& M3 B( C* y1 e
将每个按钮按下的情况做统计,画出一个矩阵。
; v3 Z1 W7 u) F1 ~( o7 X1 m; M5 ~. P! Z9 \+ O* n
转1号 1 -1 1 0 0 , x, }$ S k V+ X/ @1 x
转2号 1 1 0 0 -1 4 L7 \! G) p6 s5 A. W- v& c2 |$ p
转3号 0 -1 1 -1 0
& s: l, ^# f0 Z7 I" Z: I) q转4号 -1 0 0 1 1 ! d2 f- f- y- e+ x/ d
转5号 0 0 -1 1 1 , k* c" R; R- @
4 h& K( v2 y" Z/ U其中,顺时针转为1,逆时针为-1。 - q/ P8 v) w, B0 ~% T
" \/ N6 z1 x6 F- P2 j* Z4 O设每个转子转动的次数为X1,X2,X3,X4,X5
6 W, N& c+ `/ P: Z( T
0 x! |) q8 h5 v) c* w对可能的次数进行循环镶嵌迭代。 . Q& E2 _( `. s- |( n# w$ C9 b' i) x
! Q9 r9 z+ Y% O. m次数以4为循环,故0<=次数<=3 1 c0 k: E& t, x- n1 ~
) F0 Z# E) q7 o+ Q3 `分析结果。考虑和差可能产生的结果以及4为周期的循环结果。 % X! d; k5 K) B7 D9 A7 U9 t
1 ^0 K. K/ m( E根据结果要求,对转子1,其结果可能为0或4。 5 W4 X9 a& }, C5 x- j
8 x! J- N) b9 A" F# w+ P9 c [对转子2,其结果可能为2或-2 * o( `0 I1 e9 t5 B
( k; ~5 A0 R: @; ^3 S) v" M# v/ e对转子3,其结果可能为2或-2
2 V$ g6 l$ G6 l4 v h% N3 j* B7 ]! l. E8 T8 B* G
对转子4,其结果可能为1或-3或5
5 `- W k" P$ Z& W+ x* S% a& C. x4 e' D1 x/ g
对转子5,其结果可能为3或-1 9 k B8 O' x" p4 H2 F6 i
9 |: m q) o1 k/ a$ b2 u
TURBO C进行编程,程序如下
+ Z* }0 N9 q Y3 ?& H7 x/ S7 M* x: \#include <stdio.h> 4 K- x" Q2 Q( J4 f h2 w K
void main() $ _6 f% |% N& L; n* k' @
{
: V" N) O& W* }3 J4 g/ w int x1,x2,x3,x4,x5;
( c1 r. ~% [1 Z E int a,b,c,d,e;
9 @; B3 X* c/ C% T2 \. c for(x1=0;x1<=3;x1++)
' y2 f5 z; j7 r/ _ for(x2=0;x2<=3;x2++) . b; t+ ?7 n1 M8 h8 g5 S2 }
for(x3=0;x3<=3;x3++)
9 ^, j9 J$ c; h7 ^; t, i for(x4=0;x4<=3;x4++) 5 m. Z9 Y5 P- `' G8 U- D1 u% ?
for(x5=0;x5<=3;x5++) : l: U; V# g. T. r. l3 t* L6 N
{
( [' e2 [% \8 Y. ?- E u a=x1+x2-x4; / h" ^7 J2 t' A* {) L
b=x2-x1-x3;
! Z' o$ A1 c2 a" o" p. k8 a( x9 u c=x1+x3-x5; 2 s/ J3 v; _. j' {1 S- d
d=x4+x5-x3; ; r( w" S, v3 j" Q- z) n: n
e=x4+x5-x2; # K/ \; e, H1 P
if(a==0||a==4)
: T3 C* M& b1 c6 l5 z# E$ J' a2 h {
8 l# b+ l7 V) R; F! T8 }, i3 l if(b==2||b==-2)
1 f/ \. [* R3 p, Y* F& B$ s- ?5 c$ i { # `8 M/ E5 W8 X& N9 ?5 o' X+ B& H
if((c==2||c==-2)||c==6) + B7 a0 S/ M5 E$ I3 Z* C9 F- _
{ 9 |6 X: s( w$ n, M
if((d==1||d==-3)||d==5) # m3 K/ r: [) z, T; \, j/ j
{ / y) h4 N' s# [% \$ e& V
if(e==-1||e==3) 0 M- z9 [6 g ?( F
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5); , f4 t4 `( X( e2 ]
break; ) a: [2 }% v9 [$ e; G
}
( P6 B0 r3 q$ Y/ s
9 s- n4 f7 _# c! M/ h) {! ?- B } " V% e" @3 W1 k4 n& u5 ^+ H( L
0 U* F# _8 j. {6 e8 W# p
} : ^3 v! s/ ~0 Q( `6 a
1 \" t; F9 B" x1 j% F) q
} ; w. f1 n3 o$ N- _
; \% i& Q: Z! f/ w1 U# A7 [$ z
} ( f2 k8 E8 Y2 ~1 h& g
} 2 b; x# }+ \3 `- ]% e% c
; H- m$ ?4 c2 ^6 \% F. `2 J" N
编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |