好像有些小题大做,不过用我的脑袋实在是解不出答案。
* K2 _& o4 x n
; D( S8 f/ M7 x/ Z) x谜题:祖父的箱子 4 H( w$ e: q( \1 o! H W& |
8 z) W( `% n' U要求调到中间为红心
( b& R1 a8 o2 `, ]( {1 j* a8 G8 w8 }' T4 H
两边为方块 $ L7 n) h0 A( i$ T& H5 `
+ A: N! G3 a/ s4 R" M' x1 Q分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。 ' g$ ?6 t) \5 z, q
# G8 D3 K$ u0 Z) B* @8 {
将每个按钮按下的情况做统计,画出一个矩阵。 % R- b! H$ f4 J0 n' N; n
. N! q* w! L* \9 ^6 F" o6 r0 [转1号 1 -1 1 0 0
5 @& K: t ]/ t: s4 v' w转2号 1 1 0 0 -1 6 a& A2 b8 j; G
转3号 0 -1 1 -1 0 - r2 M; W' V/ M/ s# w C. s5 {
转4号 -1 0 0 1 1
" f% z. E* d( ]. N; @1 s转5号 0 0 -1 1 1 " r& o: i* I7 ?) a6 ^' ^* H
- ^9 c& W4 _" k- z4 w9 ~其中,顺时针转为1,逆时针为-1。
( P# N9 c' n8 V A
0 ]5 p& @# v" f) a设每个转子转动的次数为X1,X2,X3,X4,X5
- H4 C5 [; g, X( S. L) c* l7 _: ?+ U5 [- J6 h) ?6 e
对可能的次数进行循环镶嵌迭代。 4 u6 F" u; w* R' {( ~% p0 c
7 o2 K0 B( X& N/ j0 V6 ]! M
次数以4为循环,故0<=次数<=3 + O# z/ H& |4 i* G) j( d& `) X
. c8 d/ D/ u% E3 d分析结果。考虑和差可能产生的结果以及4为周期的循环结果。 # s1 x$ P$ Q* c* N3 l2 M7 e
4 k9 D5 D* u0 U2 b) H* j, c- f根据结果要求,对转子1,其结果可能为0或4。 % n6 I+ F U& l& v' o+ [
7 x! N6 M9 f( l* x% E/ ~对转子2,其结果可能为2或-2
J1 @, k6 w8 ~) Q* x! I! ]: b; Z7 `
对转子3,其结果可能为2或-2
) l1 _. g) |2 j) N6 K1 ^/ t9 l# K) Y9 U
对转子4,其结果可能为1或-3或5 9 r) O! p5 @* X! \- }
$ H+ S% Q- k5 r% L7 u
对转子5,其结果可能为3或-1
% x$ s9 z: ]9 e/ M8 [
8 X3 E6 o& ` Y" W; x8 S% r( VTURBO C进行编程,程序如下
) V& n; q" m2 s+ X3 f4 K; b! w' f#include <stdio.h> ; o. ]8 c* N0 h/ P& f' e
void main() 4 @7 `. ~; z5 t9 k4 I( _% ?
{
4 D6 i( {( X: w int x1,x2,x3,x4,x5; 5 f2 W. I' }5 [. I7 l* I) W0 b
int a,b,c,d,e;
. L+ x/ ]: o% c6 F for(x1=0;x1<=3;x1++) ( C' s& I" W0 c. H( [* M U
for(x2=0;x2<=3;x2++)
+ Y4 _ Z! _- a for(x3=0;x3<=3;x3++) * ~) U) W. C' L+ i
for(x4=0;x4<=3;x4++) 0 x$ U2 U# ^4 O6 _! V
for(x5=0;x5<=3;x5++) l* b( G7 E4 ?/ K v- A* c
{
' |% y# ]4 J/ ^ a=x1+x2-x4;
8 `& N, ^! |" j1 W b=x2-x1-x3;
9 |2 Y; F3 y* E c=x1+x3-x5; ! o# l$ s1 |+ }! n Z
d=x4+x5-x3; 1 p& G8 b8 @& E. E6 }: h1 C: {
e=x4+x5-x2; ; i( Y: p5 m6 y) f0 N# @6 C
if(a==0||a==4)
( g% n3 G6 G, \ p Z9 a { " e: Z* r" Y8 {2 f- r
if(b==2||b==-2)
3 C/ E; O* L* \7 E {
. C" L4 G- K7 ] if((c==2||c==-2)||c==6) 9 X! v3 n4 Z. q1 z) C
{
$ c3 N( N/ V8 X9 w |# y if((d==1||d==-3)||d==5) + H x" z0 L) f1 q( \' L- _
{ % J" J: h8 [$ u Y$ I8 U
if(e==-1||e==3) # M6 m) k9 z8 P$ o" Z( ?
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5);
^: |! U2 X. e6 t% \/ L break;
3 i- I' ~$ Z' I; e0 ?- ] } }3 r7 U% H; Q) ?! d/ J
& X2 m5 s* v5 q& l' f* ]
}
8 w+ m( b0 L( l5 l0 D$ W6 x
: T3 Y) x# z' n `; L } ! n5 |9 E+ C1 Z# L7 j, C% ^. a
3 L: h# ?# i0 J
}
/ h7 W2 O2 u8 }0 m! K3 f
4 m6 O' [" K+ X& M0 v7 _' R }
+ t& c# K6 K: \" c! X} & m% n# s8 l1 R# o1 R6 g
' j$ ^, v; ?4 ^ k1 k6 d# @+ Q0 U
编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |