好像有些小题大做,不过用我的脑袋实在是解不出答案。
: B$ P( b) f) H# x+ V
1 d1 w! H! E, w( S+ K$ ]1 Y谜题:祖父的箱子
8 y) z0 o5 V" X+ B9 [) C
3 w, S4 f7 s: Y) i. H _' Y要求调到中间为红心 . }6 J: ?) l j# p
|4 J1 i, F2 w' ~8 S
两边为方块 $ P8 L( k4 S% Y: ]7 v! J
9 a. r z+ \! H! A: ?
分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。 ) V' G0 j' A9 x) V& A
$ w- E3 A' E+ U. M3 Y$ j9 Y' @( Y
将每个按钮按下的情况做统计,画出一个矩阵。 4 p, s! k7 n( f
4 k0 N: Y1 O# ~: X/ m
转1号 1 -1 1 0 0 7 K( g( v! B* P3 g7 @: r% g
转2号 1 1 0 0 -1
; c6 J- d, ^, o+ J8 E转3号 0 -1 1 -1 0 , E1 _" P# T* [1 P
转4号 -1 0 0 1 1 5 q l" O) C7 t' u& I- F: G1 W2 U7 g
转5号 0 0 -1 1 1
7 Y. P& Z2 \7 Q( g, i
! ?' K$ i a0 A9 C; F$ w其中,顺时针转为1,逆时针为-1。
9 H. {6 G2 f- i2 d9 d
! t% C9 t1 A0 B设每个转子转动的次数为X1,X2,X3,X4,X5
! v3 K; g7 Q3 ]0 Q; Z% }7 i
; j+ T$ Z" m5 \! ]9 O8 h9 O对可能的次数进行循环镶嵌迭代。 2 L# |5 |/ X& A$ a
* [0 U: N& B D" h6 k) F' k
次数以4为循环,故0<=次数<=3 6 p) x2 [# A3 z/ I; r1 S5 @& [. G
. Y r" d; z) c
分析结果。考虑和差可能产生的结果以及4为周期的循环结果。
+ C ^3 \% F! A5 l, K5 r& l2 O
' [$ @: M6 G* C+ m& p3 b8 X$ l! |根据结果要求,对转子1,其结果可能为0或4。
# {1 T/ f g y& y( k9 x( V( N% P3 M& A$ h' k
对转子2,其结果可能为2或-2
' A' v; Z% i! x7 i" t T, O+ S3 o+ k. H. y7 t) B/ P
对转子3,其结果可能为2或-2 . S" j- m. i4 h% F
$ F! d5 c0 D2 h. T/ Z对转子4,其结果可能为1或-3或5 ) p) [" T& q. u i
% e: p4 C6 r; r& `5 }& \- c! C对转子5,其结果可能为3或-1
9 m- k& r+ s! S9 u* Z ]1 g9 Z+ K
TURBO C进行编程,程序如下 1 |1 ?5 w6 ~5 B9 R- l! U& P
#include <stdio.h>
( j* i" j2 @: @, U. r+ f9 C0 y$ _% Fvoid main() 6 c7 n3 V9 T2 L/ Q( I' Z
{
' N5 ]$ o Z' G3 u7 l; e int x1,x2,x3,x4,x5;
! W# p# C) O6 t! b% u0 J int a,b,c,d,e;
# b& ~0 s; F g5 ] for(x1=0;x1<=3;x1++)
" }' v; p2 f* R8 j for(x2=0;x2<=3;x2++)
/ N" C6 g! b4 r- v: ~& _ for(x3=0;x3<=3;x3++) ) N: r0 f2 h3 M/ o
for(x4=0;x4<=3;x4++)
% W, K' E3 O* \5 i for(x5=0;x5<=3;x5++)
2 p3 x" o/ `' m& J1 i { " ^- h h/ ]0 s% I
a=x1+x2-x4;
* t8 s+ `; m. n1 U& o; u b=x2-x1-x3;
" }+ L% |7 L9 \ c=x1+x3-x5;
0 D" P2 V' k/ T# @! @, f d=x4+x5-x3;
. _* t9 j1 v( r' d5 f e=x4+x5-x2;
- ~% }" d$ g% p if(a==0||a==4)
% f, Z( |. m& A7 E- P/ o% L { " T- [' |' o( K$ X0 s& [. W$ c8 }
if(b==2||b==-2) * g- ~ x$ I' v2 R
{
% E1 V- c7 _1 l& `8 X3 X4 A if((c==2||c==-2)||c==6)
, L9 \+ I( B0 J" g {
0 X" u' e: K6 c2 O6 a# m if((d==1||d==-3)||d==5) + u' @7 q2 I; |, j1 B* Z- L# d% D
{
" @( X6 r4 @, a0 f2 w if(e==-1||e==3) 4 t8 P" j7 [9 @
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5); * W8 F5 m' Q ]6 v
break; , h6 V2 ~) L% F$ K* w7 p
}
) m: {, s. ?/ }/ W0 ~+ s8 G! H& K+ R
+ j$ @1 c$ v1 q }
& g6 D& x, y7 D1 B; o. h3 J, ^. S
- }7 L2 v4 G1 ~: m } % B9 N+ {" p) }" H9 S% N# n
! C; i' U% N) p$ }6 D S
} $ W7 n0 V, h! T5 }& B' c
1 L1 Z- }, I, w2 Z" O1 X$ G1 N
}
: T4 s7 P4 g% q/ r}
, ~. H' S' i, h1 O
0 Y8 \1 ~& H7 C编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |