好像有些小题大做,不过用我的脑袋实在是解不出答案。 j2 y3 W+ s: m0 _' e: l
3 b4 O7 J0 W k8 [9 S+ r谜题:祖父的箱子
( n: W5 x$ Q5 ?( j6 O3 F$ R
9 F, H1 b8 b: h6 n要求调到中间为红心 ; q% c7 n' }4 V, k! ]
+ x, g, w% Z2 }* i# L% e/ u& k两边为方块
4 k! [3 W' Y4 w- _3 M; ~
, @' u3 }1 {+ C1 A3 I分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。
9 p4 t9 Y2 K9 e5 s/ H% V/ e- |+ n- ]0 j0 _6 D7 d
将每个按钮按下的情况做统计,画出一个矩阵。
]% T7 z; o1 s
; L" {# u: _( m8 Y转1号 1 -1 1 0 0 " V) [+ l, z% T6 C
转2号 1 1 0 0 -1 3 O! p: t/ p- ^, ~' U
转3号 0 -1 1 -1 0
/ i1 ]& B# C+ r6 p转4号 -1 0 0 1 1 # H, U8 _& @% C, \1 F
转5号 0 0 -1 1 1
3 a" z& [+ h4 P
' u: e7 p$ X" I/ N& c- L% ]其中,顺时针转为1,逆时针为-1。
" f7 f- T, {7 z, P- y
( d/ {$ G a/ i$ s" m4 P6 h \& }设每个转子转动的次数为X1,X2,X3,X4,X5
( a) l6 @. y/ W' w7 o- P" z1 H
\2 z5 Q3 G; S0 Q4 B. E0 `. `对可能的次数进行循环镶嵌迭代。
- L- g9 u" _) w& [4 W6 L* N. F9 x* ]
次数以4为循环,故0<=次数<=3 ) g# e; j4 d6 n0 j. l; u3 q6 Q
_7 b5 L) Q- D. X
分析结果。考虑和差可能产生的结果以及4为周期的循环结果。
S5 d. k: ?" ]# T+ V" E) v5 R) y
根据结果要求,对转子1,其结果可能为0或4。
! g# `% t9 n4 j. P+ R, J# H, |# K* W# G( T; e6 N% C& z% ?+ i
对转子2,其结果可能为2或-2
6 A4 ~3 ^1 w& w3 _, g. \- f
0 e, R/ D" H7 }: {( A对转子3,其结果可能为2或-2 ' \+ [4 R% |& j
# r( C; M5 z9 M对转子4,其结果可能为1或-3或5 5 R: z' V! k' w0 g
) U; @) h0 D1 `6 ?5 K, a
对转子5,其结果可能为3或-1 + V4 \" G+ t5 M. H# F' G w
" ]! D5 ~; Y; E+ m, x( u3 e
TURBO C进行编程,程序如下
4 D: t8 _: m0 N5 I#include <stdio.h>
/ E) j- L2 b5 p/ O/ Xvoid main() & D( n3 ?/ O5 n( o0 o
{ 5 q6 L( V% X% p/ N9 D ]& e
int x1,x2,x3,x4,x5; 4 a1 [0 `, G) K3 N/ t
int a,b,c,d,e; $ o; I1 {7 i2 f% f8 O ~" R7 E
for(x1=0;x1<=3;x1++) 2 b5 W% d! b$ K- }& w
for(x2=0;x2<=3;x2++) - w; C, D- r: V0 l
for(x3=0;x3<=3;x3++)
# O& p0 [: e: o( X/ H for(x4=0;x4<=3;x4++)
: h" N, v" d( U5 {4 | for(x5=0;x5<=3;x5++)
" s" V2 x% l( D { 8 O- C# G* L& `1 C
a=x1+x2-x4;
5 w2 j6 A% N* N* ^ b=x2-x1-x3; % y( d7 c! A# v" D" {2 ?
c=x1+x3-x5;
& n; }! S" F$ w/ ~: Z8 ^3 T d=x4+x5-x3; 7 t5 S4 W7 `+ f7 y. k# R8 }
e=x4+x5-x2; " P( f) r. A2 g9 l
if(a==0||a==4) & I$ n. O2 I6 ^2 f4 h
{
6 y1 e2 L7 ~" T8 L X; G if(b==2||b==-2)
) F/ i, l; x0 b- U: B { 3 x( t1 C% x; u2 S" ?
if((c==2||c==-2)||c==6)
* L2 l+ p) Z3 z+ ~4 z { 6 v- R g8 h" o* w& [' b7 V
if((d==1||d==-3)||d==5) 1 S: u# J9 @2 j- K* Q s
{ + [6 Y) E+ Z/ s" B
if(e==-1||e==3)
( ]! b' t( v* s& F printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5);
- E; t, t: y- @( Q break; / N5 [! d& {# N; I5 A
}
6 D3 K* B% t, h/ F, `9 a* ?
% D* @0 ?- { U f } 6 I9 _5 [4 i( I0 L5 Z' d9 T' w
( z$ j0 q$ a. E
}
$ I* w) q- S4 ^) L
3 ~( Y1 s6 {4 v' n: q/ x& o" Q }
5 C3 a- ]/ P/ d
$ r% D; h0 J& T+ Q( n! ^ }
G* `; d! a6 B) A7 d} & r! H* q M: I. t d) Z
5 Z+ F! m# ^- e- \
编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |