好像有些小题大做,不过用我的脑袋实在是解不出答案。 9 x7 b# f# F0 `( v! v! Q- }( |
1 {! d* H9 Y/ k* {% G谜题:祖父的箱子
/ w) w+ V# |5 a) A0 o1 |. V" ^4 h6 B/ A5 }4 n9 ~, v) w8 V: a) E2 w
要求调到中间为红心 . O* B1 r* X( ?1 u: `6 |& i
% T! d% O5 A4 v) L% ]两边为方块
2 Y5 S6 }& A5 O' W
! M! K& B; z3 d分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。
3 e% D4 m2 y, Z: S% ]& D
) r1 F# q8 p) `4 ~将每个按钮按下的情况做统计,画出一个矩阵。 * z+ [+ \* r5 k* a7 }& u3 s
/ R8 ~% K( v+ p* V* n9 @转1号 1 -1 1 0 0 $ |$ F2 Z x5 } P& K4 w
转2号 1 1 0 0 -1
6 d- f& j; v2 U转3号 0 -1 1 -1 0
$ c. ]/ ] l2 a/ _( ~- @. e转4号 -1 0 0 1 1 4 c( C' D9 Q+ p7 N( b
转5号 0 0 -1 1 1 6 i9 Q7 i7 s. T
! E3 a5 s" n6 Q) o
其中,顺时针转为1,逆时针为-1。
4 l# U; o4 w6 r! a3 e$ P* C$ H8 }0 G
: w( e6 h! I% }6 ~7 E3 |9 n3 H, |7 i设每个转子转动的次数为X1,X2,X3,X4,X5 , M9 C! o; y$ @' S/ K
* o( C3 @+ X B6 }- h对可能的次数进行循环镶嵌迭代。 + o/ g- c: s0 d9 s5 e# c7 J
8 T* @1 p/ G! y7 e7 o次数以4为循环,故0<=次数<=3 4 y2 t6 [; k0 b/ q
3 u2 L" I- A. J5 E) a5 z分析结果。考虑和差可能产生的结果以及4为周期的循环结果。 6 b# @& H9 o( k4 u2 V7 @3 u. s
' y# U6 {/ G: I# o* E5 X根据结果要求,对转子1,其结果可能为0或4。 . u+ A( j2 i/ o! S U+ R
& T0 O& D! K# I% G% ?% z对转子2,其结果可能为2或-2 5 ?& m8 R8 G: w& m# @- N1 w( I* e7 B
% L- Y2 p3 R' |) C+ D, E) z3 \对转子3,其结果可能为2或-2 . @0 m$ @) L$ O* }
8 j# U" y* T H) N. ^, Z+ u对转子4,其结果可能为1或-3或5 2 v3 _4 _- ?+ x5 W/ W8 e
8 [: e" |7 ~& o
对转子5,其结果可能为3或-1
" o2 n: y( X+ I# q5 ^% w% O1 Z# `& S. Y' T. e! g7 A5 [
TURBO C进行编程,程序如下 , s r" h: Z* o6 E
#include <stdio.h> , G+ {4 D8 _6 a% D
void main()
" U5 J/ z9 F/ b) y5 I, @{
. H! E+ d% L' n3 _: n/ b int x1,x2,x3,x4,x5; ! C, J5 C1 e* V$ l! H
int a,b,c,d,e;
# B' j, ]+ P. b! d* f: ?! K2 z for(x1=0;x1<=3;x1++) 9 k% f; c/ t7 i9 q/ }' Q" w, `
for(x2=0;x2<=3;x2++)
2 L$ [- m' z9 r1 B; U N for(x3=0;x3<=3;x3++) . h8 A* [$ ~+ L- j
for(x4=0;x4<=3;x4++) 6 F' M! k7 H' X- n5 F0 _9 c5 p! w
for(x5=0;x5<=3;x5++) , J6 U% n2 ?0 n9 ^( G/ t
{ # B* _/ e3 T2 T9 k
a=x1+x2-x4;
5 F5 n! ]. w4 A, J) E7 u b=x2-x1-x3;
7 S2 q" v8 D+ m6 m c=x1+x3-x5;
# t$ Q a2 ^* B$ C$ x' q9 w7 y( s d=x4+x5-x3; # x8 U7 M; C5 |" F( N: O
e=x4+x5-x2; $ x; ^+ @4 L$ I) T
if(a==0||a==4)
& {" @4 L! k! ^ ?+ a& R { 1 |4 e' i' C0 O) U
if(b==2||b==-2) % O; J: f0 [* s# J% x0 @: T& D
{
) f" W- b6 T' g9 e1 j8 o- z3 g* J if((c==2||c==-2)||c==6) & u$ I% E2 c7 {. T2 g+ x
{ ) q% N2 E: ^0 ^- ~
if((d==1||d==-3)||d==5)
3 z, u( B6 X( P( |& w% `0 s { ( c% W; j4 M& N# |
if(e==-1||e==3)
1 G h* s9 U2 D4 `/ g printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5);
% \& i% p4 _7 R* N0 e break;
! `9 z9 v- d, k$ w! D! C } 2 [* L3 B3 ^$ L0 Y3 U. F0 J' G
5 J5 g. @' C; T, J6 H6 n }
( v A% z- P& q
* h7 T# ?9 K: z, N8 ~ } ; s/ q: F& B9 t7 {; U1 i/ ]
0 ~; K$ `! }( e8 u+ X1 s3 N9 ^ } ; K* v0 \) Q0 b# J
7 T& o. @- O/ K: G9 {) c1 Q
} + u! g! G/ B- k. S3 y6 P* K
}
* R8 x# g- `$ V/ X* s- P4 ]* s* n4 D+ o* v9 N$ N/ K7 u
编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |