八数码问题(未解决)

#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;

}

 

你可能感兴趣的:(问题)