好像有些小题大做,不过用我的脑袋实在是解不出答案。 * e2 @8 d7 s8 r7 D
7 A' M! d9 ?2 s" O5 T9 l谜题:祖父的箱子
5 [$ l( j- U' F2 [ C: _# i3 P
/ }% h+ ]% |. R1 ]' e要求调到中间为红心 5 E6 F7 j9 ^6 U* m! O3 r
- j- ]3 s0 q% K4 V8 r& S4 Q两边为方块 ( v7 E5 ]5 W4 g# E1 X4 B! M" K; B# Q
# o' Q4 n8 o5 x6 [7 \
分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。
8 d9 D. `. a) D! D& R/ n+ {, G
! Z, N" i3 o. _2 x将每个按钮按下的情况做统计,画出一个矩阵。 / |' @! ]/ v+ s9 H( l5 x
% X, f6 A7 K$ }3 S' [8 s转1号 1 -1 1 0 0 0 d4 i4 d4 ?. ~% t ?) J# R3 x' z* ~
转2号 1 1 0 0 -1 ) o9 y9 ?( Z$ W; i
转3号 0 -1 1 -1 0 , z! s5 U' f% }8 E" |0 m
转4号 -1 0 0 1 1 / g8 i: e" b& C, j2 e9 k9 U
转5号 0 0 -1 1 1 7 k3 `8 L2 j$ u2 q4 m
# |3 V* E* u$ Y- j# ^
其中,顺时针转为1,逆时针为-1。
2 z1 V+ }, ~* U4 {! L9 A) J/ F0 r t% G; T: y" ~ @# F, P) x1 t. K( I
设每个转子转动的次数为X1,X2,X3,X4,X5 * F4 a) }5 h7 T
( H E& [1 X' l5 ]- N) G对可能的次数进行循环镶嵌迭代。
- c; q1 |- l; o3 }+ J4 v/ p/ b! Q( p+ K: Q- h5 k1 Q$ K$ {" S
次数以4为循环,故0<=次数<=3 ! }3 I' h* \, L# ]0 S2 F& U, o
) F, o/ E& Y) u( O' \# _
分析结果。考虑和差可能产生的结果以及4为周期的循环结果。
* h2 s- Z( F# {! @. P" c0 k% S# O1 C+ l
根据结果要求,对转子1,其结果可能为0或4。
( M( {& L+ q" h: d) X$ { ]+ }0 j3 x6 @5 I2 W5 `1 ?
对转子2,其结果可能为2或-2
. a2 C( Z4 x5 }# Q
6 `" F J" w$ N$ U$ e2 ?2 }对转子3,其结果可能为2或-2
! C0 r/ M8 t& ^, S l$ r) W3 C" d) w& A; w# r/ s
对转子4,其结果可能为1或-3或5
6 y. s3 g9 h9 B; Y" b F8 P# P$ t" k# y6 f
对转子5,其结果可能为3或-1
0 D' a% l1 S; O$ Z
4 B6 v& f+ f7 c2 d) sTURBO C进行编程,程序如下 0 z) {8 f8 n9 S8 i; v
#include <stdio.h>
! q+ q' h9 Z! L1 C6 yvoid main()
$ a; y& [+ F# I" _* r! v{ $ q. `) ^# D* N2 u$ k& Z" m( ^
int x1,x2,x3,x4,x5;
: s5 I d2 C3 k5 O; q int a,b,c,d,e;
: t% o; t) }3 F b9 I2 ^# t. j for(x1=0;x1<=3;x1++)
4 Z) b( O$ E8 o/ f/ ]" P6 Y8 B" D for(x2=0;x2<=3;x2++) . B4 {. F" ?+ t# | _7 U
for(x3=0;x3<=3;x3++) ' N7 `2 {$ U6 m+ J$ H
for(x4=0;x4<=3;x4++) f" Z$ n; {# q: n6 \
for(x5=0;x5<=3;x5++)
6 r! d& Q. V7 O: s, s {
$ F3 D2 k# a+ B a=x1+x2-x4;
( z' t. \* G% `* m b=x2-x1-x3; 4 E1 X# j, b; G
c=x1+x3-x5;
; I7 q: |! M7 ]* y7 } d=x4+x5-x3;
6 `1 U1 @, T" U1 N5 B e=x4+x5-x2; % m3 c% m! S4 U% p
if(a==0||a==4)
4 q+ U! O& P9 i# j) f* \ { . c2 ^+ t- }; _. Y9 D; u" k0 Z
if(b==2||b==-2)
8 {+ y2 F( W. t { & w. n! X4 I) k1 s0 U( [
if((c==2||c==-2)||c==6) # L) n9 `; K" y
{
: N7 e, m2 V/ o: k/ Z; n* v! X$ V if((d==1||d==-3)||d==5)
: i+ u4 K7 Z3 V6 h3 t { : R4 V+ @. H9 u5 A) b% X a
if(e==-1||e==3)
. j3 B2 R4 S' C1 N' S; p printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5);
' t( z1 [1 B- B2 C) z7 P7 d( Z break; + z$ P z% p/ C9 V& Q
}
' T" E( ?% x" M" d) O1 i' |
5 B# h. W2 {: g* j: H* `$ D } ; e" K/ S: n) G q: V# Q& K
$ g1 _2 t/ M8 X! Z/ f
}
" j+ o2 } x; F% x0 t# l0 \, f; E6 a. n1 u* Y5 m* K# v
} h2 |. h+ G$ o4 B8 a* P k* W1 i
9 I7 C6 D6 c, L" t ^1 H! n9 D } " x4 x, O6 K; t$ }2 ^* v
}
9 E) g/ W( M" _7 X
T+ o! O( y5 M' M9 y+ v: P编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |