Eight code issues

xiaoxiao2021-03-06  82

Problem Description:

There is a 3 * 3 chessboard, which is 0-89 numbers, 0 represents spaces, and other numbers can be exchanged with the 0. Seeking initial state

1 2 3

4 5 6

7 8 0

Solution to the minimum number of target status steps.

Input method:

E.g:

INPUT: from the keyboard:

1 2 3 7 4 5 8 0 6

OUTPUT:

Step: 1

1 2 3

4 5 6

7 8 0

Step: 2

1 2 3

4 5 0

7 8 6

Step: 3

1 2 3

4 0 5

7 8 6

Step: 4

1 2 3

0 4 5

7 8 6

Step: 5

1 2 3

7 4 5

0 8 6

STEP: 6

1 2 3

7 4 5

8 0 6

My program:

#include

#include

#include

Struct BSM

{

Int S [9];

INT preip, POS;

} AR1 [1000], AR2 [1000];

INT H1, R1, H2, R2, STEP

Struct BSM P;

INT PD (INT K)

{

INT I, J, B1, B2;

B1 = 1;

P.S [P.POS K] = P.s [P.POS] P.s [P.POS K];

P.S [p.pos] = p.s [p.pos k] -p.s [p.pos];

P.S [P.POS K] = P.s [P.POS K] -p.s [p.pos];

P.POS = P.pos K;

For (i = 0; i <= r1; i )

{

B2 = 0;

For (j = 0; j <9; j )

IF (! (AR1 [i] .S [j] == p.s [j])) b2 = 1;

B1 = b1 * b2;

}

Return (B1);

}

INT PD0 (INT K)

{

INT I, J, B1, B2;

B1 = 1;

P.S [P.POS K] = P.s [P.POS] P.s [P.POS K];

P.S [p.pos] = p.s [p.pos k] -p.s [p.pos];

P.S [P.POS K] = P.s [P.POS K] -p.s [p.pos];

P.POS = P.pos K;

For (i = 0; i <= r2; i )

{

B2 = 0;

For (j = 0; j <9; j )

IF (! (AR2 [i] .s [j] == p.s [j])) b2 = 1;

B1 = b1 * b2;

}

Return (B1);

}

INT PD1 ()

{

INT I, J, B1, B2;

B1 = 0;

For (i = H2; i <= r2; i )

{

B2 = 0;

For (j = 0; j <9; j )

IF (! (AR2 [i] .s [j] == p.s [j])) b2 = 1;

IF (0 == b2)

{

R2 = i;

B1 = 1;

}

}

Return (B1);

}

INT PD2 ()

{

INT I, J, B1, B2;

B1 = 0;

For (i = H1; i <= r1; i )

{

B2 = 0;

For (j = 0; j <9; j )

IF (! (AR1 [i] .S [j] == p.s [j])) b2 = 1; if (0 == b2)

{

R1 = i;

B1 = 1;

}

}

Return (B1);

}

Void OUT1 (Struct BSM M)

{

INT I, J;

Step ;

Printf ("Step:% D", STEP);

For (i = 0; i <9; i )

{

IF (0 == i% 3) Printf ("/ n");

Printf ("% d", m.s [i]);

}

While (! kbhit ());

i = getCH ();

Printf ("/ n");

}

void out ()

{

INT I, J, K;

Int Arr [1000];

J = -1;

While (r1> 0)

{

J = J 1;

Arr [J] = R1;

R1 = Ar1 [r1] .prep;

}

J = J 1;

Arr [J] = R1;

For (i = j; i> -1; i -)

{

OUT1 (AR1 [Arr [I]]);

}

While (R2> 0)

{

OUT1 (Ar2 [Ar2 [R2] .prep]);

R2 = ar2 [r2] .prep;

}

}

void main ()

{

INT I, J;

Step = 0;

For (i = 0; i <9; i )

{

Ar1 [0] .S [i] = (i 1)% 9;

Scanf ("% d", & ar2 [0] .s [i]);

IF (0 == Ar2 [0] .S [i]) Ar2 [0] .pos = i;

}

AR1 [0] .pos = 8;

AR1 [0] .prep = -1;

Ar2 [0] .prep = -1;

H1 = 0; R1 = 0; H2 = 0; R2 = 0;

While ((((h1 <= r1) && (R1 <999)) || ((H2 <= R2) && (R2 <999)))))

{

IF ((h1 <= r1) && (R1 <999))

{

P = Ar1 [h1];

IF (p.pos> 2)

{

IF (1 == PD (-3))

{

p.PREP = H1;

R1 ;

AR1 [R1] = P;

IF (1 == PD1 ())

{

OUT (); RETURN;

}

}

}

P = Ar1 [h1];

IF (p.pos% 3> 0)

{

IF (1 == Pd (-1)))

{

p.PREP = H1;

R1 ;

AR1 [R1] = P;

IF (1 == PD1 ())

{

OUT (); RETURN;

}

}

}

P = Ar1 [h1];

IF (P.POS <6)

{

IF (1 == Pd (3))

{

p.PREP = H1;

R1 ;

AR1 [R1] = P;

IF (1 == PD1 ())

{

OUT (); RETURN;

}

}

}

P = Ar1 [h1];

IF (p.pos% 3 <2)

{

IF (1 == Pd (1))

{

p.PREP = H1;

R1 ;

AR1 [R1] = P;

IF (1 == PD1 ())

{

OUT (); RETURN;

}

}

}

H1 ;

}

IF ((H2 <= R2) && (R2 <999))

{

P = Ar2 [H2];

IF (p.pos> 2)

{

IF (1 == PD0 (-3))

{

P.PREP = H2;

R2 ;

Ar2 [R2] = P;

IF (1 == PD2 ())

{

OUT (); RETURN;

}

}

}

P = Ar2 [H2];

IF (p.pos% 3> 0)

{

IF (1 == PD0 (-1))

{

P.PREP = H2;

R2 ;

Ar2 [R2] = P;

IF (1 == PD2 ())

{

OUT (); RETURN;

}

}

}

P = Ar2 [H2];

IF (P.POS <6)

{

IF (1 == PD0 (3))

{

P.PREP = H2;

R2 ;

Ar2 [R2] = P;

IF (1 == PD2 ())

{

OUT (); RETURN;

}

}

}

P = Ar2 [H2];

IF (p.pos% 3 <2)

{

IF (1 == PD0 (1))

{

P.PREP = H2;

R2 ;

Ar2 [R2] = P;

IF (1 == PD2 ())

{

OUT (); RETURN;

}

}

}

H2 ;

}

}

IF (Step == 0) Printf ("i cannot find the answer!");

}

转载请注明原文地址:https://www.9cbs.com/read-95555.html

New Post(0)