好像有些小题大做,不过用我的脑袋实在是解不出答案。 , s4 D( v- K( v! s; _
$ [4 V o5 ?0 z谜题:祖父的箱子 6 O8 p$ W" W/ V2 c N, u
4 U% ~+ E. A' ]
要求调到中间为红心 * @5 k" Z6 E1 k8 f
. X+ P( L" u) E! Q2 V2 \两边为方块
- J' k+ u3 l) K; b" t. K8 V/ D2 g2 O$ I" [
分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。 * G! E; ?6 D( [: p3 a; ^
- k* C: J9 y+ l$ n: c: _0 R- K9 p将每个按钮按下的情况做统计,画出一个矩阵。
) O! D" j4 P$ \8 X; ~. {+ w$ @ }
1 m" U. b& H" |9 T转1号 1 -1 1 0 0 " e. Y4 N& T9 Y$ `* m5 H5 [" W& \
转2号 1 1 0 0 -1
* Z- b) r$ O, k* D转3号 0 -1 1 -1 0 7 E" J; l; m+ w2 J" h
转4号 -1 0 0 1 1
+ W! B9 d4 s; `转5号 0 0 -1 1 1
& \2 Z4 X3 k) ?6 v5 D. o6 t5 o. ]+ {( k1 d# k& A2 Y- c" x
其中,顺时针转为1,逆时针为-1。 - Y3 J# J2 @1 c. c+ ~
8 q# B, x" i$ O" E0 A
设每个转子转动的次数为X1,X2,X3,X4,X5 ( Z: R4 h. K! X9 r) A" w& P( u9 j
0 ?# j5 S# k! k! b对可能的次数进行循环镶嵌迭代。
. u0 U, y4 s& i; [3 G9 P9 B! M- F3 Z* o: _& ]5 r: G
次数以4为循环,故0<=次数<=3
v* U: x6 { v+ ^' l1 m( o/ v. T, g* Q
分析结果。考虑和差可能产生的结果以及4为周期的循环结果。 9 C7 Q# |, C; V& X- P U# G0 \
, Q& k' z, ]- J9 _0 n, L
根据结果要求,对转子1,其结果可能为0或4。 4 E% s, q0 k4 d1 l+ S+ a8 M
* [/ I6 E6 \6 D6 t对转子2,其结果可能为2或-2 4 `9 m" Q( S& W( H* G3 h
/ O7 u4 m! ]. Q% W对转子3,其结果可能为2或-2
) l. G6 }/ ^4 C' V1 Y6 o
" L; l! a+ i" E) t对转子4,其结果可能为1或-3或5 ; m. f! H, h/ p8 D! A5 L
& P3 \4 V4 _* S9 L
对转子5,其结果可能为3或-1
; k! e, Q0 F v* F" L
3 U; n& _! F+ D5 a$ _ j* S( C3 _$ KTURBO C进行编程,程序如下 5 a, u: Q. \- B2 t) P# n# n# o2 `
#include <stdio.h> - E1 c9 f! x9 j/ g" t [
void main()
|$ d" H0 c% D r# D$ L3 s{
1 K+ l, M/ R6 V/ t* M int x1,x2,x3,x4,x5; ' ]1 v2 n7 ~. c @
int a,b,c,d,e;
2 c" t8 y4 b) U2 g _# V6 f* j for(x1=0;x1<=3;x1++)
# Z6 |8 `7 ~+ C a N5 y; S for(x2=0;x2<=3;x2++) : N) B8 B# @2 h8 B* d$ S/ b2 N, {& T
for(x3=0;x3<=3;x3++) 7 a. k# ?$ i& d, E
for(x4=0;x4<=3;x4++) 1 O0 C q/ ]( `( e: N/ O" R- b) Q
for(x5=0;x5<=3;x5++)
7 L& a1 |/ a! r# G$ Y* T2 n' {3 ^ { 3 |7 f; n3 }& S) n' T9 j8 ~
a=x1+x2-x4; * u7 d: W: _- \) @9 @. s! c5 d8 {
b=x2-x1-x3;
, a" `) }) I W* Q, x' x3 ~1 { c=x1+x3-x5;
2 N7 G: g0 I, k3 A& | C d=x4+x5-x3;
' e* b! s w, Z& h e=x4+x5-x2; 8 E8 U" w& f. H0 A% \+ V+ @3 Q2 }
if(a==0||a==4) , `; d. \5 R7 Z9 l- }5 C) ]: H
{ 5 d& A. m$ g, X( Y. Q: I D
if(b==2||b==-2) 7 Y+ z* }. [* X9 `) ]$ s w* B$ }9 p
{ . E9 Z' K/ N$ Z5 {" w, ]
if((c==2||c==-2)||c==6) ! W# {* Z- I, w# N
{
& G9 `, s3 [! E6 ` if((d==1||d==-3)||d==5)
+ E1 H* X( t7 t+ m n% I { ' T ~: ], Z- h# y# k- e
if(e==-1||e==3) # |8 e7 _5 |: c7 r0 t1 z# S( p/ r
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5);
$ `) J% t$ x- ] break;
! B. A4 O! W& ?' {. n }
8 J' M' L; c# P3 ^
( y- _& a$ }1 O( t- n, m } 1 q5 j7 d& X. P, B
$ n2 \" v: x3 t2 i- w7 h/ T
} - l( w- A. L" X2 f
% y) A, S/ ^0 s1 i4 J. ]9 n
} ) G& y1 E' A5 @$ L3 r& b8 h* O% E [
4 o8 [1 w! S) @2 y' T1 a
}
d6 M8 m7 S4 X/ n5 i; a} b5 E8 R- U/ k8 k1 b- ]7 [3 a8 g9 t
7 F% r3 [: W3 v; t7 N
编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |