好像有些小题大做,不过用我的脑袋实在是解不出答案。 ' W6 X7 L$ ?: C
+ b' l. f6 m1 y8 ?谜题:祖父的箱子
]/ y/ J5 O( H2 U3 t. [ {9 p
/ n: ?/ V: ?* r1 L# E' z要求调到中间为红心 $ l0 f6 z: N/ q+ g- _0 z3 Q
3 x E( X2 Q6 Z0 X
两边为方块 & B! T: G# w6 J
3 u; d5 O6 Z, W9 k
分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。
0 W7 c2 F e2 d( k" g( l# O7 J1 f5 a% S/ }. [
将每个按钮按下的情况做统计,画出一个矩阵。
8 a% [, ]1 g3 w: f( [; m$ [4 e
4 |& i0 V- r+ x& d# J转1号 1 -1 1 0 0
5 X' H0 m" c1 c2 O7 G7 X转2号 1 1 0 0 -1
6 j' l4 R R. S& q+ K0 o( n转3号 0 -1 1 -1 0 2 X) k+ Z; u$ S a* _! M6 @0 e$ P9 v
转4号 -1 0 0 1 1 % N, x# x8 T& q% V, V
转5号 0 0 -1 1 1
! I, C; Y+ j c/ l2 T. ^ i6 ?/ \2 {! p7 ?* L# b f# q
其中,顺时针转为1,逆时针为-1。
% G$ N& c% |/ q' l( M* d0 c9 [' N8 ]5 z! h/ k& W% g
设每个转子转动的次数为X1,X2,X3,X4,X5
- A/ e. Z( l; Z# `" C9 l% l1 g h- p! V$ l9 K' @- s4 c8 t
对可能的次数进行循环镶嵌迭代。
! E0 [6 y8 H; @3 u( N
0 ^& k- T1 v. k( t次数以4为循环,故0<=次数<=3
; w0 y& J5 \: e4 c5 M' |% L
% |* c: q( B/ Y' }0 i9 b7 S分析结果。考虑和差可能产生的结果以及4为周期的循环结果。
, S7 m) `; N/ k, D: r" k
- j u5 s' u' h4 ~$ D/ v根据结果要求,对转子1,其结果可能为0或4。
" g n& Z3 G: G/ g" ~7 s7 q
. `; ]9 S6 u0 O! s7 S对转子2,其结果可能为2或-2
- X: q1 M4 y. V D( G! |& N" m: b" u j& Y/ u% r" k
对转子3,其结果可能为2或-2
9 {+ H. i( f* W1 V. {% @( a
6 G8 b7 c) h9 Y3 i. [3 e对转子4,其结果可能为1或-3或5
& @0 R% e% j8 m. z7 m" d/ l0 Z
对转子5,其结果可能为3或-1
, B+ H* @6 }8 ?. |& K7 q; c' X/ E$ y( f7 o
TURBO C进行编程,程序如下
; H* B+ Z! f/ `& H#include <stdio.h> 5 C' c9 X0 V& B& ?& p8 @
void main() - V: I- E9 B2 f( ]2 f& [
{ ' ~# Y1 a$ {/ ~& I
int x1,x2,x3,x4,x5;
- A" C5 _% A7 k6 m$ } int a,b,c,d,e;
* W, f" T8 g* o: S4 `+ x for(x1=0;x1<=3;x1++)
; S; [( Z3 h$ k- E: S for(x2=0;x2<=3;x2++) $ ^0 h. |5 F+ {; Y# p) p* T) q n
for(x3=0;x3<=3;x3++) 1 V& Q$ ^1 u) E8 S4 q1 |3 x
for(x4=0;x4<=3;x4++)
" }9 T( A) B! F8 @* l for(x5=0;x5<=3;x5++)
! Y" l3 M' F$ T9 u! F9 M: ], ~& h {
$ d# ^, x1 k0 i1 J2 J8 Q/ w( d& i4 ?+ } O a=x1+x2-x4; # v1 k9 g8 {% d; k
b=x2-x1-x3;
0 w5 S0 Z y D, q6 b# @ c=x1+x3-x5;
+ X2 a1 |# b, s d=x4+x5-x3; $ [# u, R- h1 n# t# V/ X
e=x4+x5-x2; . c. }4 m u# |" q+ b/ f
if(a==0||a==4)
6 \5 ~! }' T) B6 g {
- G" w& g [5 h* r9 i if(b==2||b==-2) : _+ k/ t5 y1 B; B6 Y9 w
{ ; X1 ^6 { e1 |" I% n( Q
if((c==2||c==-2)||c==6)
3 j6 v& {6 W, K' c { . l y. x# Y% ]% s$ ]9 |
if((d==1||d==-3)||d==5)
. D$ Y- p2 l1 B" a, h6 \ { . b7 `; T/ ]- i6 n8 k
if(e==-1||e==3) 8 b: k V; H+ v, s
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5);
' t0 @* }8 G& z/ m: B break; 9 G+ i6 _: p3 J9 b' r7 B
}
3 b$ K4 W2 a5 o2 ^& W, }/ @6 _
$ {( [: j$ h" J1 Q; @. z4 T$ N }
& x3 _: N6 L! ~8 S9 |! O& c4 r7 ~2 o5 g/ R6 \
}
8 u3 d; L, z: Z" D( {$ m( _% A- z7 z1 L
}
3 e. B; y$ s1 y' x, ^& ]( Y# ]0 N. y$ o4 R* y0 B. [: Q
}
/ Q6 V: I6 j. O0 a* Y}
4 Q2 p& c& M/ h0 z* X3 K2 }0 S/ @- ^! k+ x) C/ c
编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |