好像有些小题大做,不过用我的脑袋实在是解不出答案。 u% n5 `9 C: [; {& R
0 b6 ?! K6 [3 X2 y+ D谜题:祖父的箱子 , X1 v, Y. N4 Z x" v, `9 g0 A
# I4 W& [4 I( R u要求调到中间为红心 / y$ _9 A: d( M) Y/ g
* v' ]( |: J) r ^4 j3 F" e* ?
两边为方块
: ~; I B4 j8 H9 t+ P0 l
$ x: n# o) R/ D; F3 C) ?: f分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。 0 _: Z( y) m& y1 t& |
, V. t' C6 c( a7 X3 R& n1 {将每个按钮按下的情况做统计,画出一个矩阵。 ' ~ B2 }# @7 x
& C& O: }. ^& w& [' g
转1号 1 -1 1 0 0 & q6 o( v! b" r# ?& V- J# i& G/ X S# {
转2号 1 1 0 0 -1
$ T7 f3 E2 _7 A转3号 0 -1 1 -1 0 ( _7 e( }, p0 K! T" D$ }9 P
转4号 -1 0 0 1 1 8 o$ R |: F2 d3 p4 X* l+ k
转5号 0 0 -1 1 1
1 y! o4 X! F" S9 l7 C% \% @6 p/ R- r0 [% M
其中,顺时针转为1,逆时针为-1。
/ o% g1 v7 R& r7 _) ~; N) E* F" [1 `, H+ {* d' n
设每个转子转动的次数为X1,X2,X3,X4,X5 8 S% w( s1 L* ^' m& W7 Z7 q, s+ p
& S l% k F, j' r5 O- k
对可能的次数进行循环镶嵌迭代。
7 E9 v9 V, {* K3 W; I; L
7 D6 e! U. z2 s" k; S次数以4为循环,故0<=次数<=3
/ F) g- s' A: @" B! n. Z6 F
/ ` D- o; \+ d+ D分析结果。考虑和差可能产生的结果以及4为周期的循环结果。
' c( g E% f2 X! Z) N! [; b( S# P; h' g; g9 G) c8 ]- f
根据结果要求,对转子1,其结果可能为0或4。
1 H+ _1 T" l! ~" Y F# j+ {+ b5 M! e
6 q7 ?. V+ [/ A' r" q对转子2,其结果可能为2或-2
. E! V. l+ F5 T/ q
- J# Z5 Q, G1 a( W) `' Z3 P对转子3,其结果可能为2或-2
! H; b6 a) k" _6 `) _/ |9 a! l l0 V/ ]1 |) @4 g
对转子4,其结果可能为1或-3或5
% `8 V& l1 C9 Z" [3 g6 O" e) d" q
. r. [" |2 r; ]; B; T对转子5,其结果可能为3或-1 b- S/ P! U9 R+ |# y: J8 g
% Y8 r9 T: x$ f- s
TURBO C进行编程,程序如下
, U0 t6 m4 V. m1 ^3 q#include <stdio.h> 6 ?6 H. e! x- s
void main()
; W! z n1 z& i0 N{ 7 k: l' ^% E7 N/ ~
int x1,x2,x3,x4,x5; 7 g; E; Q' _: X# ^5 I, j
int a,b,c,d,e; , V6 J: f) }% e1 X% m1 i& }5 U0 q
for(x1=0;x1<=3;x1++) @2 C2 N& ~8 m3 K6 w
for(x2=0;x2<=3;x2++)
& D8 M* T% G( l+ q. K# v for(x3=0;x3<=3;x3++) # h' i& W4 H9 h9 M9 s
for(x4=0;x4<=3;x4++) 5 V8 ^& D2 E$ b" g6 j, v
for(x5=0;x5<=3;x5++) 7 z! R$ y) X9 Q$ r1 N
{ - d% d5 P7 o" h5 l: F
a=x1+x2-x4;
4 W D- Y- Q1 v5 @2 }" F b=x2-x1-x3;
+ W) a0 I/ C r: d, y c=x1+x3-x5; 6 I" N* d3 A1 S- L u, x4 y; p( l
d=x4+x5-x3; - b; @- i8 \5 |) x1 j/ q1 R0 m
e=x4+x5-x2; 4 z/ V7 i+ P7 q! L1 e
if(a==0||a==4) + I0 I, u, I+ G1 D3 r: S) ^# U
{
' p% n( I% M& i$ c2 \9 W if(b==2||b==-2)
" a) P1 C5 |/ w/ h w {
2 f5 K- }. g# q" k if((c==2||c==-2)||c==6) 1 F1 |2 ^0 P9 s4 \: C" S
{
" ?2 c2 x+ o5 v if((d==1||d==-3)||d==5) B: q2 V: e) W9 U9 j# @1 S6 f
{
% g' Y9 ]1 n$ X4 Z if(e==-1||e==3) 3 U ~% H3 l6 V1 F0 h) l$ Z3 f
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5); 7 Z2 m1 f/ }1 @- }
break; * ]- d* k( Y) E0 m1 A: v" ^
} / L( z3 y9 t/ ]- Q
F+ [6 W! G m `( m
} 7 h! o" y* h+ r4 |* j
. I4 ?( T' \) E- d/ s* B
}
+ x, D+ c9 m' ~8 W$ ^( L" l9 x+ Y4 X2 j- O7 Z; w- V( ?+ a" _2 @
} 0 r! \$ `3 l4 m1 b6 E0 ]
* ^, h; G; [8 Z7 {) r7 k
}
7 J: c% L7 z5 u8 D} ) h) t4 G# M+ k& X* t# j0 o( U* {
/ C0 u/ s3 a* |8 n! Z
编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |