好像有些小题大做,不过用我的脑袋实在是解不出答案。 : H1 ?2 U' _3 ?* w
7 }! P/ M( ?5 B; J% A- {
谜题:祖父的箱子
! j; G) Y( [/ Z7 J# v) s) g7 d7 [+ S/ r- ^0 h6 { x# b
要求调到中间为红心 + M J9 `8 P( f9 w; A+ h' C/ m2 r
( T. Q) F' j+ i! D两边为方块 * \) x/ D1 U' S6 a& K" v
& ]' D+ m6 R+ a$ a' O分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。 ) N. g& s5 ]6 a5 q
) P, G [) J: d, N: {& u, s将每个按钮按下的情况做统计,画出一个矩阵。 / L6 [' j. H/ }6 h6 i5 `1 \5 l
3 g5 h4 |: q. |- w( N
转1号 1 -1 1 0 0
9 ]7 K* N) S7 W0 s3 t( j5 ?$ o- ]转2号 1 1 0 0 -1
2 ^# W+ @3 Z& I( H, m转3号 0 -1 1 -1 0 ' b0 f. Y& m- A
转4号 -1 0 0 1 1 8 G) J0 k' k) l4 [$ g3 _; Y+ H
转5号 0 0 -1 1 1
2 F' E: d# J4 I/ G: d* j2 s$ P
其中,顺时针转为1,逆时针为-1。
$ X* j H' q% e, l) c/ ^1 j0 u( r8 f# }* i
设每个转子转动的次数为X1,X2,X3,X4,X5
: |6 B7 `3 U3 L+ D1 ?
$ N6 n# d4 G9 Y2 ?4 J" C4 z0 z7 q) L对可能的次数进行循环镶嵌迭代。 ' J9 T/ J) S0 S' E& J7 K- N4 J
9 z' y5 u( b* ~8 ?* {
次数以4为循环,故0<=次数<=3
7 c2 o% S' j, v/ o/ b; T& J2 C3 j( S+ l
分析结果。考虑和差可能产生的结果以及4为周期的循环结果。 4 \) u+ K8 K# f E* [" @# _
1 R8 U1 O1 ~, |6 R
根据结果要求,对转子1,其结果可能为0或4。 ) p* I2 ?4 {' F
5 D! H# @/ f4 B2 U
对转子2,其结果可能为2或-2 : R U- p, D8 C8 p0 ^8 `/ A) f
& y$ L) d, j$ l% J* h5 }+ b对转子3,其结果可能为2或-2 ' x2 _2 }$ F: ~- z3 a2 ^. b
. E( A6 ~6 |" C5 g/ a" E
对转子4,其结果可能为1或-3或5
: H: C) c/ L7 C1 g: R( P: u
! T4 S' C0 m, C对转子5,其结果可能为3或-1 b8 i9 g2 z6 Z7 q) U
+ v" G+ B2 w/ \1 n: t: s
TURBO C进行编程,程序如下
( Y) T" t' [2 y) ~' b) @#include <stdio.h>
7 }# C1 ]3 W) s+ [void main()
- {! L. t9 K& @1 O" b{
" k$ r% G$ _+ N Y* p. [ int x1,x2,x3,x4,x5;
+ r! V0 d0 o+ m* S) E0 ^ int a,b,c,d,e;
* i3 ~, e( D8 p, y for(x1=0;x1<=3;x1++)
5 ^ s2 A' M- m& ]1 C: x for(x2=0;x2<=3;x2++) 5 L) U! Q7 Y2 o% B6 p/ D1 l
for(x3=0;x3<=3;x3++)
) Q, {1 _" K8 Y. N: ~; R for(x4=0;x4<=3;x4++)
- S/ e. |, B$ z4 h( y$ G' D5 z( E for(x5=0;x5<=3;x5++)
* H; ~/ \3 d. o {
# j) v' g- N" H9 t a=x1+x2-x4;
- x1 g9 X4 l, ?4 z- Q4 R1 u b=x2-x1-x3;
) }" G' l: A7 ?' _8 {, w# a6 T c=x1+x3-x5;
# J! P. M1 P: ]% x% t- L0 H d=x4+x5-x3; & S4 y, x! o6 N# F3 {$ q$ @/ R, _
e=x4+x5-x2; ) r7 s- @; j# j' u/ G. S" d
if(a==0||a==4) : A. A1 f) A0 w2 a; l
{ $ R1 y. f9 T+ {5 w, ~
if(b==2||b==-2) 3 k" Z( w( |7 l) w7 O/ e
{ $ }: x# E0 k8 U: d: w
if((c==2||c==-2)||c==6)
- |+ [+ n9 C6 b {
' `4 {5 }4 l) D$ s1 Y9 o if((d==1||d==-3)||d==5)
/ n* q4 ?4 |9 s* \- ~3 x {
$ n9 @9 V' j9 h6 \- R8 F+ T if(e==-1||e==3) 3 ~( C: U4 [7 A6 r+ m% b
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5);
4 |' d1 X( s5 M i break; c" w: C. p; j% h4 Z
}
) o* _! G% b" T+ t5 V2 O' U0 g
, K: N% v, w, u2 S I4 C+ s: A2 X' b* G1 z } & U* ~9 K' n4 ^
8 Y7 ~# g; L6 z3 D& K0 f$ B
} 5 F9 \+ a( W" j9 h# f: P2 z
1 s9 i' Y7 N$ g: b# R4 P' z } 0 w7 x# j# ^# W2 W" w1 Q7 B
# |/ X, ]( k/ _) e }
* A$ q! {3 W1 f; A. c}
' X+ N* `4 w7 B+ D, n! |/ z3 N9 ^
/ `7 Q3 Z( g/ d8 r: x! U! d# ^8 t9 o编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |