八数码问题(未解决)
#include<stdio.h> #include<iostream> #include<string> #include<queue> using namespace std; int f[4][2]={1,0,0,1,-1,0,0,-1}; char map[3][3]; int stx,sty; string ans; struct Node { int value; int ss[10]; bool operator <(Node t1,Node t2) { if(t1.value<t2.value)return false; return true; } }; priority_queue<Node>q; void Dfs(int step,int sum) { while(!q.empty) { Node t=q.top(); q.pop(); } for(int i=0;i<n;i++) if(t.ss[0]!=i)sum++; if(sum==0)return ; for() } bool Judge() { int ans=0; for(int i=1;i<9;i++) { for(int j=0;j<i;j++) { if(map[i]<map[j])ans++; } } if(ans&1)return true; return false; } int main() { int i,j; char s[10]; while(cin.get(s,15)) { //printf("%s\n",s); int k=0,ki=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { map[i][j]=s[2*k]; k++; if(map[i][j]=='x') { stx=i; sty=j; } else ss[ki++]=map[i][j]; } if(Judge())printf("unsolvable\n"); else { Dfs(); printf("%s\n",ans); } /*for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%c ",map[i][j]); printf("\n"); }*/ } return 0; }