好像有些小题大做,不过用我的脑袋实在是解不出答案。 7 H: W' v; w: ]2 ]
2 Z/ I! r# H( V6 A. l) m6 \3 x7 f
谜题:祖父的箱子 ( c3 q. c/ O$ ~# M% e- [$ `% e7 J2 \
# ]5 a6 g3 r) n要求调到中间为红心
5 O: e' i) c/ M4 P8 d* ]+ C! R) ]: E( \! [( d& Y: [5 K0 w
两边为方块 # j8 i% v6 l7 X" N0 Z
2 v+ K: }1 s* a3 L
分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。
) P. \, X( ?$ L* R
5 e/ B; i8 Q9 P# |: _& V' C8 ~将每个按钮按下的情况做统计,画出一个矩阵。 c9 }: U; O1 s- k
8 p$ `2 n. q- @+ n4 n6 Z. f9 Q( m
转1号 1 -1 1 0 0
; t# j$ {, n7 B" x' E' X' j转2号 1 1 0 0 -1 2 y: }( p. q* Z1 H3 B; S
转3号 0 -1 1 -1 0 & U. o! q/ X# W0 |. s2 N$ P% b
转4号 -1 0 0 1 1 ; [: L: b: G2 n. V
转5号 0 0 -1 1 1 ' r6 z: }! G1 W# Z/ s
[/ C$ g H( T) w) ^
其中,顺时针转为1,逆时针为-1。 - f1 R/ u1 G2 H
2 |- A1 p( H3 t, U; F. Q
设每个转子转动的次数为X1,X2,X3,X4,X5 & r& q0 S$ q) i5 I/ p& H
: s1 G5 l) D. U. F7 c
对可能的次数进行循环镶嵌迭代。
( R' Q' ]8 H p, z7 F8 c E' F" q% T/ x5 B6 G
次数以4为循环,故0<=次数<=3
; L5 a7 I6 h; r9 a0 X O+ ~* o5 u2 o* [2 f d4 ]
分析结果。考虑和差可能产生的结果以及4为周期的循环结果。 $ |# Y9 K4 V1 Q% m9 t
$ |' r& B \8 _& L3 n- D& V根据结果要求,对转子1,其结果可能为0或4。 0 O7 q: a+ m9 y1 s3 X( p
: @) E( F; _' G1 J/ `
对转子2,其结果可能为2或-2
7 z4 P' L1 _. f+ ]" V6 M" \6 f
+ x" h& a( `8 p对转子3,其结果可能为2或-2 3 s& T% \1 S5 X' _) P" m$ `. }
; Y# I8 [ ]# F2 ~对转子4,其结果可能为1或-3或5
' f9 S' d; C5 l1 K, M3 [$ h" ?3 d, R
. A7 R" Y5 l0 F$ Q# A/ z+ s对转子5,其结果可能为3或-1 / s. w6 A e# q+ P5 K
0 f# ~ B2 J; M) N8 K* [! h% h0 v
TURBO C进行编程,程序如下
! c% K' b, n# y! ?. z9 a8 d$ U#include <stdio.h>
' [; r, [4 h8 O1 U' xvoid main() 6 a& C# @6 S! r( f+ X
{
; v0 i1 Z5 f3 P; d, o" n int x1,x2,x3,x4,x5;
6 v$ H3 c4 y2 G; |4 u! p int a,b,c,d,e; ( o- O+ t( E( }, x2 t" q S9 t+ j
for(x1=0;x1<=3;x1++) 6 m6 E3 x( m# B
for(x2=0;x2<=3;x2++)
; [: v: i/ L4 Z7 E9 C1 l0 Y5 C; ^! Z for(x3=0;x3<=3;x3++) 1 z7 K% X' _. z/ o& p, H
for(x4=0;x4<=3;x4++) 2 p( ~4 s$ [$ z! M! i3 J
for(x5=0;x5<=3;x5++)
) j+ ?8 {( @3 i {
# [1 X4 Q% T$ v/ [+ T8 \: w a=x1+x2-x4; " h+ {9 k9 K; R# j
b=x2-x1-x3; 7 _4 h5 \+ q7 Z- Z
c=x1+x3-x5;
1 Y2 z7 x2 b- r5 } d=x4+x5-x3;
# d$ y3 F/ o: ?* O e=x4+x5-x2; - L, ]( k. w" y9 b+ `+ J7 s' E+ {
if(a==0||a==4)
" E* o) ?! `& l% m { $ o( i1 o7 p# m- E6 h( w% o
if(b==2||b==-2) $ h$ {& W6 E: `1 l0 Q
{ ' p3 Z# X+ j+ B4 G. A( Z
if((c==2||c==-2)||c==6)
1 {2 S; G& ]7 K; z" u1 g4 D { ' A/ p! w1 M" H" y
if((d==1||d==-3)||d==5) * s! E' ]* Z$ I" X
{ ( l: ^' B; F& H, l6 O
if(e==-1||e==3) ' s8 _: ~$ u: }8 T; M; B
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5);
5 m& `1 d% n" ?# p. p0 F break;
5 L* s) W- M q7 l } " K! C& `( {3 @. r9 A( h
4 Y$ |7 }7 _5 [: t/ B9 E
}
) h; W# o; B$ M0 `) D! p: c5 k/ s& O z. q; ?8 j
} : W; b6 e( a' |( b* X. v
/ {7 E: w/ H9 O3 Q" ] i }
% s3 c. F; N7 s
6 `! e7 J+ k$ p3 r' ]4 F6 Z8 j } * D" u, @* O4 ^' D( ?- `) _( x
} ) |! K" o' `& M
+ q( W' x D- }+ D m编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |