¿Cuál es el código fuente de Jiu?
¿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: