好像有些小题大做,不过用我的脑袋实在是解不出答案。
) ?) z. |8 I- Y; ] P# M1 M) I7 b" X6 {9 Q% F. u' p
谜题:祖父的箱子
! x7 T' Z9 D+ Y( v, e8 p3 L3 i6 b, d$ c: `* M, ?* U2 z0 {$ q
要求调到中间为红心 0 x1 Z, S! J. e- Z% e
( ^1 R4 p; f0 ?" W: ~+ ? f
两边为方块 ; Y3 g, K/ y/ V! B
' |/ v( D/ @, H! `* f6 [0 M C
分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。
, V4 d3 \5 J% N, _4 V7 f# h8 @: G- R+ y. i8 l& G N+ r: o- [
将每个按钮按下的情况做统计,画出一个矩阵。 & V, V/ r* s0 D& k
! m! Q, H D- e" ?! z" I
转1号 1 -1 1 0 0 : ^4 r5 g' k4 [$ z) w. n4 W
转2号 1 1 0 0 -1
1 R- H- o6 b( P9 O7 p% N" D转3号 0 -1 1 -1 0
7 q# d& G; h ?0 e% A, d3 f转4号 -1 0 0 1 1 9 c9 ]; p' k% G* i+ a
转5号 0 0 -1 1 1 % e$ ?9 l* h1 G; x
- L- ^( [ K$ L9 y! V
其中,顺时针转为1,逆时针为-1。 9 h) }# J$ r( u- E0 H
' s; t* I: L% J4 W5 r. |1 n% ^设每个转子转动的次数为X1,X2,X3,X4,X5 ( ?# L6 e* l( X2 `0 }
/ r e; d7 T* W0 n- \
对可能的次数进行循环镶嵌迭代。
# Q5 u9 `7 H( g" d1 e# f
$ _0 v2 A9 o- R- x8 Y次数以4为循环,故0<=次数<=3
1 U; i# q5 j4 h( e5 f) K6 l3 u& b& @) E1 G& |* y3 U5 o" ~
分析结果。考虑和差可能产生的结果以及4为周期的循环结果。
9 n4 M; m) K4 o7 W$ t5 k) n, l6 |$ H( G1 s- x
根据结果要求,对转子1,其结果可能为0或4。
u, ] j3 i" r/ E4 E+ p) N# R1 N
对转子2,其结果可能为2或-2
# d' d+ H5 ~# e; Y9 e! @2 }/ l/ Q: p; W
对转子3,其结果可能为2或-2
* X6 o% j% [) z8 z n( n3 j/ V
[6 w" z9 g% u对转子4,其结果可能为1或-3或5 8 F- p0 o8 G9 K% d! x [
" H* c; q! j" g2 g
对转子5,其结果可能为3或-1
% u/ h* o; w v' s0 x$ b/ j; M2 E8 o3 Y
TURBO C进行编程,程序如下 1 `7 J% h6 r& o1 Y
#include <stdio.h>
/ J3 q7 Z N& G; avoid main()
- E6 e; F: j% | ^$ Y, D. p{
+ ~' D: o& ?( C0 H1 \6 E int x1,x2,x3,x4,x5; ( W( {7 r: C1 T
int a,b,c,d,e; * O1 t# R) a( C
for(x1=0;x1<=3;x1++) ; A/ S$ _; @( d& b5 N
for(x2=0;x2<=3;x2++) ( \- g e, c. E/ v
for(x3=0;x3<=3;x3++) 5 F# e: c# s$ J" H. R
for(x4=0;x4<=3;x4++) - K# X5 Q. T G; g% K4 l
for(x5=0;x5<=3;x5++)
: f7 j* `) z; B {
7 D7 w6 e( M7 W6 N a=x1+x2-x4; * T1 L. g% M$ w* \" Y
b=x2-x1-x3; . d/ p( v$ I2 K) Z
c=x1+x3-x5;
9 Z7 g& o% ?5 Z4 t) {5 ?5 T% I* n d=x4+x5-x3; 1 M6 T0 T M9 X+ _' B6 x( v& Z
e=x4+x5-x2;
% X) h. P9 g2 B( X if(a==0||a==4)
5 d! w. x! m* z* b2 |$ c( r9 f5 } { 4 ?3 M# l& ]: |$ P
if(b==2||b==-2)
) ~* q+ v6 }) B/ a {
, @7 h/ _8 v8 { if((c==2||c==-2)||c==6)
! Q8 H9 i! K d1 T- X8 I { " i$ p* ^4 S2 F0 V* ` K3 @% |
if((d==1||d==-3)||d==5)
3 b9 J5 x4 [' u# V$ E {
- k! I0 L! a" W' ^* l a. a7 v if(e==-1||e==3) . L5 U! }1 O$ ]4 ^
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5); : w E- y+ u7 |, V3 Z0 A
break; 6 |/ g% c% c, q. ]4 q3 M
}
& S, n8 _5 _( U7 L. e2 P
$ _) i1 Y% `( V$ _ }. s; i } 0 k! j- ^5 C8 X) t; T5 d0 m; n; S/ e5 z
) i* ]8 I; Q1 ?& m } 3 [# B8 q) Q3 y6 D# V
5 q( K( h: p3 G$ S( m, ?1 P6 l }
- b: {( L& U8 ?7 l! C0 I
5 N# ^% K" b8 ?7 W } 8 r7 o4 f3 J- L+ j9 j0 B
}
$ k9 E! D( E C( {* d: ^; |6 M
6 `. g1 e: o0 V; A- F$ _0 B. d; R, C; F; K编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |