Red de conocimientos turísticos - Información de alquiler - ¿Cuál es el código fuente de Jiu?

¿Cuál es el código fuente de Jiu?

# include & ltstdio.h & gt

¿Sin firmar? ¿corto? Temperatura[20]; //Estado intermedio de almacenamiento

int? ¿paso? =?0;//

Ciel? OP[][16]={

"Estado inicial",

"A a B",

"Todas las a son c",

"A está lleno de B",

"a" está lleno de "c",

"Dale todo b a a",

"Dar todo b a c",

Rellenar "b" con "c",

"C a A",

"Todo c a b ",

" C llena B "

};

//Tamaño del paso de salida

¿No es válido? mostrar()

{

int? i;

for(I = 0;i<= pasoi++)

printf("%2d:[?%10s?]?:?%d,%d,% d\ n ",

?i+1,

?OP[(temp[I]&0xf000)>>12],

? (temp[I ]& amp;0xf00)>& gt8,

? (temp[I]& amp;0xf0)>& gt4,

;0xf);

}

//Compruebe si se producirá un estado duplicado.

int? comprobar()

{

int? i;

for(I = 0;i<step;i++)

{

if((temp[paso]&0x 0 fff )=(temp [I]&0x0fff))? ¿devolver? 1;

}

¿Volver? 0;

}

//Función recursiva

//A, B y C son las cantidades actuales de petróleo en los tres barriles de petróleo, y op es verter el aceite. Operaciones específicas.

int? foo(int?A12, int?B9, ?int?C5, ?int?op)

{

temp[paso]=(op & lt; & lt12)|( a 12 <<8)|(B9<<4)|C5;

si(check()==1)? ¿devolver? 0;

si(A12==6?& amp& amp?B9==6)? ¿devolver? 1;

paso++;

//A12 todo va a B9.

¿Qué pasa si (A12?&&?(a 12+B9<=9)?&&?foo(0,A12+B9,C5,1))? ¿devolver? 1;

//A12 se invierte todo a C5.

¿Y si? si(A12?&?(a 12+C5<=5)?&&?foo(0,B9,A12+C5,2))? ¿devolver? 1;

//A12 llena B9.

¿Y si? si(A12?&?(a 12+B9>9)?&&?foo(A12+B9-9,9,C5,3))? ¿devolver? 1;

//A12 llena C5

¿Y si? si(A12?&?(a 12+C5>5)?&&?foo(A12+C5-5,B9,5,4))? ¿devolver? 1;

//B9 todo vuelve a A12.

¿Y si? si (B9?&?(B9+a 12<12)?&&?foo(A12+B9,0,C5,5))? ¿devolver? 1;

//B9 derrotó completamente a C5.

¿Y si? si(B9?&?(B9+C5<=5)?&&?foo(A12,0,B9+C5,6))? ¿devolver? 1;

//B9 llena C5.

¿Y si? si(B9?&?(B9+C5>5)?&&?foo(A12,B9+C5-5,5,7))? ¿devolver? 1;

//C5 todo vuelve a A12.

¿Y si? si (C5?&?(C5+a 12<12)?&&?foo(C5+A12,B9,0,8))? ¿devolver? 1;

//C5 todos caen a B9.

¿Y si? si (C5?&?(C5+B9<=9)?&&?foo(A12,B9+C5,0,9))? ¿devolver? 1;

//C5 llena B9.

¿Y si? si(C5?&?(C5+B9>9)?&&?foo(A12,9,C5+B9-5,10))? ¿devolver? 1;

Otro

{

Paso-;

¿Volver? 0;

}

}

int? main()

{

if(foo(12, 0, 0, 0))? display();

}

Resultado: