好像有些小题大做,不过用我的脑袋实在是解不出答案。 6 T5 H _+ f0 ?
' v0 V2 A$ _: j
谜题:祖父的箱子 - C7 w! R, H8 Z- [! E
! p, Q7 O* W0 s
要求调到中间为红心 $ g4 f' v/ k, k( Q/ _% H
3 A8 w) L g4 G; v
两边为方块 0 X. j0 X- ~! F
+ \; T0 L0 l: h4 E9 i9 x分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。
5 |: d4 y# S6 d, c" E$ X6 {3 F, l$ ^* `2 e" x
将每个按钮按下的情况做统计,画出一个矩阵。 2 H1 j( |# s* B
5 D Q) D/ I% E& G" ~转1号 1 -1 1 0 0
2 w) R7 b k4 m8 ^转2号 1 1 0 0 -1 # r8 d. f* J( r( r, E K" n
转3号 0 -1 1 -1 0 7 ^( I0 L, E' {5 e" }
转4号 -1 0 0 1 1
5 J, O2 ~( P5 M9 Y; U5 G转5号 0 0 -1 1 1 " M* G) W) Y1 ?/ n: ~' Y0 P! C
9 ~0 }4 a$ }7 o2 c' l3 |
其中,顺时针转为1,逆时针为-1。
. b6 ?5 z3 }: ]3 e7 L' ]& J1 x' [3 p9 p7 Y% I2 D* |. F
设每个转子转动的次数为X1,X2,X3,X4,X5 6 _) I6 S H$ c8 r S
+ Q P$ R- Q+ q' S* b$ m ?
对可能的次数进行循环镶嵌迭代。
. O/ b1 L) D5 b/ ]
. t* c- u7 X0 V& c次数以4为循环,故0<=次数<=3 & g/ K" L& I6 W
3 _1 D6 u4 j) @$ B0 D! ^& r( H4 h! f
分析结果。考虑和差可能产生的结果以及4为周期的循环结果。
1 f% `% {3 S% T& `5 j/ z) Y" D
* d- }- ^: E, y5 v- u7 z根据结果要求,对转子1,其结果可能为0或4。 ) g4 c- y$ [/ m6 \+ d5 t+ ?
+ L3 n* Z( G+ X
对转子2,其结果可能为2或-2
# }( O, u% X/ q' I: S" v" Z5 a8 \+ H5 H
对转子3,其结果可能为2或-2
n' ]5 Y' }/ F8 h" r& I
+ S! v! o4 x0 N4 d' w$ g4 v对转子4,其结果可能为1或-3或5
5 D+ y* i9 w9 x( L/ l- t4 _
/ v1 q! K$ x6 E y0 [9 Y9 [7 M: G2 |- e对转子5,其结果可能为3或-1
% c2 b* e( r* ^* u
?7 R% l' ^$ V. |# DTURBO C进行编程,程序如下
( g0 c2 F) O. a2 d% O* @. o( m#include <stdio.h> & O" c# B0 K! x! X- l
void main()
8 ~6 f/ A/ L( [4 N3 [/ }4 a" U{ : ?2 ], ?. y& G* W4 p
int x1,x2,x3,x4,x5; * U. C6 B/ h# h/ {/ O" e! }
int a,b,c,d,e; $ m8 k- c, U2 ~0 X4 Q5 S
for(x1=0;x1<=3;x1++) 0 G! d q+ @2 d/ g
for(x2=0;x2<=3;x2++)
6 L0 ?/ L0 o: s$ B5 u- }6 E for(x3=0;x3<=3;x3++) ; t2 E' a% B' ?9 i
for(x4=0;x4<=3;x4++)
4 N1 O3 ^6 e: b. G3 w for(x5=0;x5<=3;x5++)
, v- Y5 G/ M9 F H5 c { " p3 p4 z: ^: r- S
a=x1+x2-x4; . l' Q0 ~& D# T6 E5 z T$ W- y
b=x2-x1-x3; ( A$ Z; q- A" K1 q# L* o
c=x1+x3-x5;
0 C$ M" \0 c7 q# E d=x4+x5-x3;
4 \+ x* E6 k8 `$ V0 {* ]+ t2 ~ e=x4+x5-x2;
9 B% ~# U8 L, }% ]/ E2 { if(a==0||a==4)
4 ]% M& }" j r { ! F6 N+ r5 i( \ l
if(b==2||b==-2)
. T* y2 { w* K$ p( e2 ^ { 2 I6 M4 u7 W1 W6 t7 V8 {
if((c==2||c==-2)||c==6)
: U1 g6 |4 N0 }0 k0 x0 w6 x {
% S4 e6 `9 s- O if((d==1||d==-3)||d==5)
* n! G/ I' ]+ H T$ p { ' X& |) q5 @! n8 ^ P* i; `2 o
if(e==-1||e==3) 8 T% R8 K6 M, t
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5); 4 I/ X% R, ?5 j: t; w/ p7 @' z8 O
break;
6 |# Z7 [( f6 }& l/ E3 b' _9 a5 [ } % W) g. W) |& }! d( o
( v; C7 M, V% ^% O: i) V
}
* \; E1 L/ A a+ L+ }' S
7 |0 K: T) U7 C. C) q/ `' j S h }
) _; D' i+ M8 e6 Z) U' [- A3 s y u
} / O# B7 `4 q* c: L1 w$ N* q
! b7 U& A. `/ H/ h" e( s# `4 X
} / D+ f9 G* y- y$ u$ i- T0 }1 k+ s
}
i. ~% M0 Q3 g9 w/ ?, z9 u& M: O( s0 z
编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |