print_path(father[cur]);
printf("%d",path[cur]);
}
}
void print_back(){ // 打印出逆向搜索部分
string str = change_state(que[ans]);
int cur = back_vis[str];
while(cur){
printf("%d", back_path[cur]);
cur = back_father[cur];
}
}
int main(){
freopen("input.txt","r",stdin);
int T;
back_bfs(); // 逆向搜索只需要一次就够了
scanf("%d", &T);
while(T--){
scanf("%d", &start[i]);
if(memcmp(start, goal, sizeof(goal))==0)
printf("PUZZLE ALREADY SOLVED\n");
else{
bfs();
if(ans!=-1){
print_path(ans);
print_back();
printf("\n");
}
else www.2cto.com
printf("NO SOLUTION WAS FOUND IN 16 STEPS\n");
}
}
return 0;
}
作者:shuangde800