void printpuzzle(board *b) { int i; for(i=0;i<4;i++) { switch((i+1)) { case 1: if(b->c1!=NULL && b->c1->to_goal==1) { printboard(b->c1); getch(); printpuzzle(b->c1); } break; case 2: if(b->c2!=NULL && b->c2->to_goal==1) { printboard(b->c2); getch(); printpuzzle(b->c2); } break; case 3: if(b->c3!=NULL && b->c3->to_goal==1) { printboard(b->c3); getch(); printpuzzle(b->c3); } break; case 4: if(b->c4!=NULL && b->c4->to_goal==1) { printboard(b->c4); getch(); printpuzzle(b->c4); } break; default: return; } } }
void main() { int fg=0; int f=0; int p1[3][3]; f++; clrscr(); printf("Enter initial state:\n"); for(int i=0;i<3;i++) for(int j=0;j<3;j++) { scanf("%d",&mat[i][j]); if(mat[i][j]==0) { a=i; b=j; } puzzle=(puzzle*10)+mat[i][j]; } printf("Enter solution:\n"); for(i=0;i<3;i++) for(j=0;j<3;j++) { scanf("%d",&p1[i][j]); solution=(solution*10)+p1[i][j]; } printf("Step %d:\n",f); printpuzzle(); printf("\n\n"); fg=equalp(puzzle,solution); if(fg==1) { printf("\n\nSolution Found:\n"); printpuzzle(); getch(); exit(0); } insertclose(puzzle); while(1) { insertopen(); returnopen(); fg=equalp(puzzle,solution); if(fg==1) { printf("\n\nSolution Found:\n"); printpuzzle(); getch(); break; } insertclose(puzzle); f++; printf("Step %d:\n",f); printpuzzle(); printf("\n\n"); getch(); } getch(); }