好像有些小题大做,不过用我的脑袋实在是解不出答案。 2 C0 p( {8 W, F2 \" C
# B: V% V) {/ _ G' M1 l3 F谜题:祖父的箱子
+ }4 v9 P r- |$ Y' p; J* I
9 D Z" U1 j1 r; N4 Q5 E+ }要求调到中间为红心 ! _; ~% [; x8 _! }8 t4 j
1 p- Z2 r; B4 x. n2 L$ h
两边为方块
1 J9 \0 Z! z9 r3 ^7 E' J6 n- [) L8 G: n/ Y( S8 t* p. p
分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。
. I" ~8 ~" x, `2 ]5 B# q F5 m/ z( ~8 ?
将每个按钮按下的情况做统计,画出一个矩阵。
% B: i" O, N' l/ I
: N. t* a6 w. g转1号 1 -1 1 0 0 - `2 F8 U, _% c% o+ T y( @2 Q f" g
转2号 1 1 0 0 -1 8 a4 l% {) T3 h
转3号 0 -1 1 -1 0
7 A6 _: K6 T1 A d转4号 -1 0 0 1 1 $ {% T2 o# u3 V0 }/ Y
转5号 0 0 -1 1 1
3 B+ ~0 A! N8 y
- \7 N& o/ i9 O9 `9 }" q其中,顺时针转为1,逆时针为-1。 8 p4 G9 D g: Y/ v; @% t) o
+ I0 ~/ g8 s: e! n" }/ q
设每个转子转动的次数为X1,X2,X3,X4,X5
$ g z+ `! F2 c# n3 ?3 }/ e, \ h
对可能的次数进行循环镶嵌迭代。 ) `5 o' D( E9 n ~0 ?6 t# ~
# k/ L% I% c# A0 Q; A( R
次数以4为循环,故0<=次数<=3 , k& O- f' }! G
& S: r( p" _: S" t; p
分析结果。考虑和差可能产生的结果以及4为周期的循环结果。
7 m# d# Q( \* D5 o+ n: }# f. n: S
# P. Y. M1 u, V3 S3 Q& R1 }根据结果要求,对转子1,其结果可能为0或4。 * o. D5 b4 o ^4 f( Z. @. g
/ |9 z# b/ W+ h. V8 ~) \. q对转子2,其结果可能为2或-2 7 K' A1 A+ w& k$ ^4 Y5 M
# G7 w, f! @$ X) @
对转子3,其结果可能为2或-2
/ R, W( _! s5 v4 h8 h; {) G0 R+ F; D
对转子4,其结果可能为1或-3或5
. x4 v' y( f' u
: [4 i4 g8 @% m对转子5,其结果可能为3或-1 8 c* P) C, o! R/ {
! q' F9 O( b0 O8 ]/ {/ _
TURBO C进行编程,程序如下 2 ^& c& ~' [0 F# C1 }8 C1 Q; ^ Z+ q
#include <stdio.h>
$ X. y T2 x1 G% `+ xvoid main()
# m. `/ H' C3 z, K. V{
* Z* d) i$ P( w; |9 c int x1,x2,x3,x4,x5; ; [" Z6 p; x- J; ~+ _' a5 p4 r
int a,b,c,d,e; 0 A$ _* ?3 K7 e; U/ @* R
for(x1=0;x1<=3;x1++) * k; `2 P7 Z& e) `3 R- @. L
for(x2=0;x2<=3;x2++)
3 C, \$ g5 w, F1 x$ m% d1 m1 K for(x3=0;x3<=3;x3++) 2 Q `) N: t+ T1 V1 M2 C" q S
for(x4=0;x4<=3;x4++) % Z( A5 H7 ~3 i2 t( Q7 r5 d% y3 }; E
for(x5=0;x5<=3;x5++) 1 Z! l3 g$ `/ f0 K! g; ^; w1 Y
{ 6 s4 m' r5 {( I6 a/ O" U3 O
a=x1+x2-x4; $ `) p4 n: I- Q. @8 f8 _) ?
b=x2-x1-x3;
$ k) w% o8 L7 T8 _ c=x1+x3-x5; ' ]# c. ]1 t' S) q
d=x4+x5-x3; 1 W* o- K: e N- V" a2 u7 W6 P
e=x4+x5-x2; ) R* l1 k" s- A% w Q. _0 B0 l
if(a==0||a==4)
+ L7 `; G1 I, t { * D- U: U! y2 U
if(b==2||b==-2) : ?% u/ f) y. p3 s0 Z
{ 7 r( W: F' R+ `$ O6 `3 m
if((c==2||c==-2)||c==6) 0 U0 _2 V9 }4 F8 y/ a9 a( e! j
{
6 e/ M! Z2 R6 `" F5 ^5 k( u. d if((d==1||d==-3)||d==5)
- x# ~; F$ n, G; F0 k6 I2 ^ { 6 H& n c; Y1 O9 ?
if(e==-1||e==3) 3 X- I. ~9 n. v) G3 E* C
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5);
, J7 ]1 d! s$ `. E y break;
$ ]! L9 t& a8 }5 N } 3 V( G. f k0 M* W- f' H$ e- R; Y* H
9 ^/ z0 p2 i0 H0 |" Z$ o
}
5 l3 [* k6 n% h/ Z1 C+ e& N7 p6 q( @' o5 x
} & _7 S/ q( p0 k, B4 M& Z G
' R, t5 I/ Z4 E7 j
}
3 I; |8 p8 p ?7 A- R* B
# j9 G# X. B R( n3 Q& o } $ J: t2 i2 u* R# x: t
} 4 b7 `: B& ^& ]( s2 z# c
0 ?: Z% v+ n3 _" R编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |