好像有些小题大做,不过用我的脑袋实在是解不出答案。
9 W( x+ R4 T& E1 [9 Q( R H' }( X4 S+ I- r5 O8 d
谜题:祖父的箱子 ! X5 ]5 K6 G# c4 A( F
, W$ p# x' ?) w要求调到中间为红心 5 G) q$ K1 N5 \* ~0 Q, W5 v0 E0 a
' p; P6 L5 m' x. `2 w, A/ c两边为方块 9 m% o8 K) s, p. |) e* N
+ \6 Z. B, ?( ^' ^, E3 ^分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。
# W: x: j) h& i# p+ Y
5 a. D: | ^- o3 K& @& t M/ B& X将每个按钮按下的情况做统计,画出一个矩阵。
2 ^! K; T) F3 h' W, y8 S$ e8 W- x+ s; C5 h
转1号 1 -1 1 0 0 ( Z* v* F3 T# _% C
转2号 1 1 0 0 -1 - i ^8 J( `" o" ]/ C
转3号 0 -1 1 -1 0
! C5 Q: x! q! O9 I1 I转4号 -1 0 0 1 1 2 A# Z; p, x2 J
转5号 0 0 -1 1 1 : w7 o& U+ |# ~9 G: M% B
5 t4 G: m& u$ v# r9 \8 c7 T其中,顺时针转为1,逆时针为-1。 2 S/ p% K. R- `: `
1 G9 s$ }7 W# A& t$ U3 K4 b; `设每个转子转动的次数为X1,X2,X3,X4,X5 % Q1 o0 A" n. Z3 r( c' M% O( g
! f+ A. ^; L7 m2 \+ y) Y% A; b) l
对可能的次数进行循环镶嵌迭代。 , Z9 J9 c' p$ H+ ?! N4 N* ?
3 }6 h. y6 C+ `4 b6 W次数以4为循环,故0<=次数<=3 - R L) @: v' u# _ t
2 e0 ~ R$ E' @( S分析结果。考虑和差可能产生的结果以及4为周期的循环结果。 4 N$ ?9 Z2 v6 q6 j& ]
- A7 M7 `& J. O7 [ `根据结果要求,对转子1,其结果可能为0或4。 % V* |/ z1 a6 d2 @( i
3 ]- [3 Y8 Z6 I" E' J: o
对转子2,其结果可能为2或-2
5 l. a2 V% `2 s1 t( W. A1 X
; i- o' F) u8 U8 r对转子3,其结果可能为2或-2 1 z7 X# _/ @ r5 s7 P$ E, P6 N
+ i1 F- l( V/ ?, ?& ^+ V. ]
对转子4,其结果可能为1或-3或5 1 I4 ?9 Z3 B: }8 H
# O, O' V1 F* {/ Y2 P对转子5,其结果可能为3或-1 & J! _) o' B( h0 z6 `6 n
& E3 S' k( O, |, B( X1 ]TURBO C进行编程,程序如下
9 s/ ^# l' P- ?( U# N: z#include <stdio.h>
( j& \6 \! }( x9 L+ k4 N @7 V- Q' uvoid main() 6 q. Z8 R9 `- K8 P, r6 f: k0 ~
{ # w/ a; S+ |$ q' H, H, Q5 O
int x1,x2,x3,x4,x5;
& j/ z$ b/ f7 y" j8 d9 o8 x8 \- n int a,b,c,d,e;
. b, G9 G2 }/ {: m$ j8 p/ N for(x1=0;x1<=3;x1++) 0 V m2 O, }7 U; Q6 K
for(x2=0;x2<=3;x2++)
1 w& G1 D8 Z r% K+ {$ j& ? for(x3=0;x3<=3;x3++) 0 H4 E+ P) p; j' p! D, o
for(x4=0;x4<=3;x4++)
% [; U8 H0 [1 d5 Y: x! { for(x5=0;x5<=3;x5++) 2 l; f( K* j( k
{
5 F) {' y9 l# u: e, b+ n$ k a=x1+x2-x4; , S2 T& N# t6 {: M6 f" L, h
b=x2-x1-x3;
" u, g7 C9 K; G- m+ J- j7 v c=x1+x3-x5; 1 g0 j+ H4 p: _6 O
d=x4+x5-x3;
# [& w$ s$ t: W7 B; o2 A! Y e=x4+x5-x2; ; ^+ _% w, w9 x
if(a==0||a==4) - U6 R% W& F9 J4 l h8 N1 {
{ ! D" E0 B2 J6 P' q. e X3 _
if(b==2||b==-2) : `$ M1 i( O2 U' l w# S/ y
{ * X: V, I/ I9 p& |/ ]2 l1 |% ~
if((c==2||c==-2)||c==6)
, j6 M! |9 [% a { 5 Z7 z2 y( C4 O( l' G# v/ ~" C% H
if((d==1||d==-3)||d==5) . ~5 O. J2 a! Z3 q" Y/ G/ T
{
% Y x4 G% o9 @* z" T( u( i D3 | if(e==-1||e==3) ) ?8 w+ D% M1 M* v5 M k2 a
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5);
# o1 B R* |- ?8 C% c6 i# Y break; , Q* C, b1 J2 X. C7 m2 w. }: _! \
} . P9 T( H; B! G$ g {4 m* ?* U
4 }4 j7 t. H I) w }
! \: n, e7 ]9 g" H
& @3 |% P M8 X! ^ } # Q4 ?. |8 D( K# s% r
4 y+ }3 e+ t! L) [) G" A3 T } & @' `, e; m" \6 X+ \6 c4 P h }
( ^. _) d7 j4 w$ ` }
% B" N' g' t3 a5 w, d! ?}
1 P* w. S" P" @# h6 Q4 a: ~- U3 w& z* K/ q; m- g
编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |