好像有些小题大做,不过用我的脑袋实在是解不出答案。
1 z4 y2 h. y2 ` z! B* p
+ d: h {. ~ V谜题:祖父的箱子 # _6 J A- C' o$ H0 G
" ^- t: N1 `0 c+ Z要求调到中间为红心
* Q9 m! x' W' U, U0 A- Q( p9 V8 o, S- D( H3 M% K" \$ X
两边为方块 " Z/ g. B+ |& E1 ?$ i: J- y
, i# [4 G* N9 Y6 |& b0 M
分析了一下,每动一个钮会有三个旋转,而且结果不唯一,想不出来,只好编程解题。 & x7 ?" j' Y& S y
. V1 d6 r: g! t( x" K2 L# e将每个按钮按下的情况做统计,画出一个矩阵。 0 x! P" v: l& o/ B$ @1 @
0 ?. ~+ m7 s8 M0 k, k1 J- z# A3 A转1号 1 -1 1 0 0 7 I. L- S2 |4 F6 s) p7 ?
转2号 1 1 0 0 -1
; K2 c) M% e: Y& O转3号 0 -1 1 -1 0
& I2 F" f" l; C' g# G转4号 -1 0 0 1 1 & T1 L+ P J; C3 X
转5号 0 0 -1 1 1 ; b; ]) D5 Y g1 f* m+ X+ i- m5 q7 K
# \" _% y' r; |( l+ p5 N7 @% [
其中,顺时针转为1,逆时针为-1。 8 a3 N$ Z8 Z& A# n
& z1 V6 i+ O# h0 r* @设每个转子转动的次数为X1,X2,X3,X4,X5
/ e+ l8 _" F" @. C9 d) {" D- t" ~% A$ _% C, a. k
对可能的次数进行循环镶嵌迭代。 5 o; _7 C y, ~% N
( j% B+ Y+ t0 v次数以4为循环,故0<=次数<=3
/ Q! D, G* I' ^/ f* i3 \/ h, I! v2 @) t: |
分析结果。考虑和差可能产生的结果以及4为周期的循环结果。 . C8 o3 D; s3 z3 m# L
8 t, S$ a( h, ^8 T根据结果要求,对转子1,其结果可能为0或4。 ! d7 C" T1 S4 b7 L% j9 V' C0 ^
- O6 ]) W1 y$ A; A对转子2,其结果可能为2或-2
+ L" h: W* f/ f4 d g& N: q
; M, F$ Y" z0 ?4 T- l) d对转子3,其结果可能为2或-2 8 w5 @* O/ |0 N7 ?' C- s
' C( {% m8 \, z* Z9 d! x v; j对转子4,其结果可能为1或-3或5 ( g% x6 c/ L% Z
4 x" O0 x1 L/ }, J" x对转子5,其结果可能为3或-1 y: m. y: Y4 m" P
7 F( D& o* z& k( c
TURBO C进行编程,程序如下 ' V8 `1 X$ W2 b0 {( z3 i/ [
#include <stdio.h> , ]: R$ }' C2 W% `4 V0 m
void main()
! o$ t h# P- O0 A{ % m" r" }, O/ d
int x1,x2,x3,x4,x5; . B& Q Q; I1 C6 b& O# f4 O
int a,b,c,d,e; 3 o" G. o% o" z% F0 \8 b- P
for(x1=0;x1<=3;x1++)
1 @; t& _+ Q/ u, b* V- Z for(x2=0;x2<=3;x2++)
7 _5 c1 n7 L) a7 h) T" ~ for(x3=0;x3<=3;x3++) 7 G9 D- f$ p% n* M+ E8 C
for(x4=0;x4<=3;x4++) ' h& r: ]) l8 a5 b9 D7 O" U( P
for(x5=0;x5<=3;x5++) $ E8 ] L, x/ {8 m8 R
{
( p' u C4 E/ e4 C8 }# C. l5 m a=x1+x2-x4;
, a" @4 I* @ y7 R v) x$ N6 Q b=x2-x1-x3; 6 I/ G8 S5 z3 U$ H: G; H6 | O
c=x1+x3-x5;
, L0 R# }4 n0 u: l2 ?$ u d=x4+x5-x3; : T: s6 m, u8 E! e3 K' F+ |
e=x4+x5-x2; $ u& ?0 d0 f% {* L) |( a1 d
if(a==0||a==4)
# [8 y, l! Y3 ] { 2 n5 v& @5 v& B$ k4 N9 D
if(b==2||b==-2)
; `: W5 k7 D+ E6 w, P7 i { % W( T; z4 R' X f& A9 o5 e3 k
if((c==2||c==-2)||c==6)
7 p8 V! ]6 s; G5 L {
6 i+ p. o, y0 d/ I. R" m if((d==1||d==-3)||d==5) $ @" W7 R) p6 E5 N5 l
{ 5 m: r- u$ ?5 F/ ~2 o2 d
if(e==-1||e==3) ' c) R$ x' d% q7 w
printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d\n",x1,x2,x3,x4,x5); 6 |0 c/ a4 `2 M
break;
7 |5 f7 N# B* u o7 m }
+ s t5 i" U5 a3 t' i! `' ^5 s/ l$ X+ `
" A% p! b) e7 E; @$ k4 `' { }
2 s, R; z& |8 b
/ u4 ^$ J1 j, Y" E0 [ i }
0 F1 C; J) r1 Y/ J) m
4 S3 Q1 g7 T( `4 y; S' m }
$ X* H5 {4 V; U' f. v( T# ]
+ S) a r; A/ ?8 ] }
) i2 a2 D) J |; t% e}
, F$ i+ S& [9 P9 g. r" }' R$ k2 c. n. m$ O2 R/ ]! F
编译,调试,结果为X1=0;X2=3;X3=1;X4=3;X5=3 |