好像有些小题大做,不过用我的脑袋实在是解不出答案。
- E7 w$ Z- Y4 y9 G$ d% u7 W9 \4 D2 A% ?& A% B
谜题:祖父的箱子
% i$ I# ?# `6 [
: k' d8 s# U( t& r! j要求调到中间为红心 - @# P3 S& i; N7 k5 c! F E
: M z1 s& v7 I3 F9 E两边为方块 ; a: ]2 U, d, ]9 ]6 g+ ]
% y5 n3 N: @) b t
分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。
6 w& P- t, Z- S% f8 o6 V
, r" T5 ~" z* s4 k2 X将每个按钮按下的情况做统计,画出一个矩阵。 - Q! t$ f4 [& W
7 ]: D8 a8 [) y; G3 K1 r2 p转1号 1 -1 1 0 0 & R5 O* V; k$ x) \
转2号 1 1 0 0 -1 4 H. N2 Q0 X# w! V. e
转3号 0 -1 1 -1 0
6 S& l3 G% |: r6 H8 C* O转4号 -1 0 0 1 1 s( O. S, F( ?
转5号 0 0 -1 1 1 B8 Y! I1 h- n2 q3 Z6 b* @
/ H; h, t4 O+ ~6 X+ U其中,顺时针转为1,逆时针为-1。
- H2 N! \: ]& t3 O$ P3 i9 c% y9 s& j" X1 m) f
设每个转子转动的次数为X1,X2,X3,X4,X5
1 e$ K" k( \& f0 _2 S) W
: S- Z5 Z, n6 \6 A对可能的次数进行循环镶嵌迭代。 1 s# Q' w, ~. w! K% B. S) _% C
; B- D" o8 B8 u4 M. ]次数以4为循环,故0<=次数<=3
6 z; `7 l1 e0 I' C2 F5 M9 q
) p$ b( w: C; n8 a5 i分析结果。考虑和差可能产生的结果以及4为周期的循环结果。 1 I1 d Q% k! [! T' ^1 q3 P
, r% a4 K% v6 B( C4 f$ N0 w根据结果要求,对转子1,其结果可能为0或4。 & W$ H; K: g* Y* I" e; w& {+ W
8 @' z. u% o! m$ c
对转子2,其结果可能为2或-2
9 ?0 S! ?. V* h0 c
, T/ B' e5 v0 a" l( g对转子3,其结果可能为2或-2
) Z. L% N* Y" u \
! {: H+ A% \ x/ N8 z* f对转子4,其结果可能为1或-3或5 4 L4 B6 Y' p9 x* _
K( Z" J- B1 n5 K. K8 S, h8 d对转子5,其结果可能为3或-1 - P8 T' _2 k; a* O1 B' a* e
$ l7 S# f- G8 h. p4 rTURBO C进行编程,程序如下
, N9 T" I2 [0 p#include <stdio.h>
& Y" m5 M) k4 s9 Y' t/ J5 E) M- hvoid main()
8 L( [* e$ j V# T* ~3 H J{ + i# K1 |* e' m1 w3 P- Z" t
int x1,x2,x3,x4,x5; L- O: _8 L. i k
int a,b,c,d,e;
5 a' S7 E; e( v3 [ for(x1=0;x1<=3;x1++) 7 u8 Z' u) w6 T- V& R+ d w) |
for(x2=0;x2<=3;x2++) - N9 i- w1 v( B" P9 ~% f
for(x3=0;x3<=3;x3++) 5 a- M$ @: G) j7 V; _8 _
for(x4=0;x4<=3;x4++) & ]% Q0 L n3 @5 `% E
for(x5=0;x5<=3;x5++)
" N5 I y# ^1 l ` {
5 Y4 ]7 {0 R4 E( G7 Z: P a=x1+x2-x4;
7 }) r, D' h" m' R- k b=x2-x1-x3; 1 ~' S) M# k: }' T* y5 I3 V
c=x1+x3-x5; 7 n5 Y( h9 R, V* H+ b
d=x4+x5-x3;
2 U5 @/ e# r9 T8 ?9 j4 L4 X9 c e=x4+x5-x2; % Q$ r* v$ S- m1 C2 _. p
if(a==0||a==4)
4 v2 d8 S, u1 Y3 I& s; y+ C- u { 7 C8 y# x& K+ x l7 |5 k
if(b==2||b==-2)
, U0 l1 W1 }3 s { 8 a! _$ ~0 K! M" m0 G% A* P
if((c==2||c==-2)||c==6) + b" D! \9 {$ q: L% `, Y3 [( c
{
9 O& s) ?/ |( y6 |; |: w% L if((d==1||d==-3)||d==5)
9 k; [, Z- \: J( Z& |% K; q { ; X# p, N) K" f* F
if(e==-1||e==3) - }* x. j2 Q5 S% N
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5);
4 v3 o% p* I. _# ]+ f; ] break; 2 D# Y z% t# j" c$ B$ n
}
& t6 P$ l3 T; b& h7 n6 G
- H, h. O- k9 x4 r; \/ H$ ] } : K' b: g( m3 K' C
0 Y* n+ N. g/ P. |. m
}
* f, ~ a$ d% }% e2 T8 U+ \3 R; c* ^- O" \; R
} 7 d1 T0 m' g- Q7 G
' W" W. C/ X5 N5 h& ~& K }
9 j k5 c& Y! n3 i}
. s5 N4 ?* [+ ]2 G. N5 h8 M; s# I# y" v$ b
编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |