| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
没写完的代码中转用,不要动,也请不要评论:
/*
* POJ 1077 EIGHT
* Author:wzy[linusc]
* Last Edit 9:32pm,30 April,2010
* */
#include <iostream>
#include <map>
#define MAX_Q_SIZE 800000
#define FR 0
#define BK 1
using namespace std;
const int Ex_Addr[4][9]={{1,2,2,4,5,5,7,8,8},//R
{0,0,1,3,3,4,6,6,7},//L
{3,4,5,6,7,8,6,7,8},//D
{0,1,2,0,1,2,3,4,5}}; //U
S_Buff[2]={1,-1};
typedef char puz[9];//Attention that it could not be read by "%s",or "cin >>x"
typedef int MNode[2];//0-Pre;1-Data
puz St,Gl={'1','2','3','4','5','6','7','8','0'};
map<MNode,int> HashMap;
class TQ
{
public:
TQ()
{
f=r=0;
}
clear()
{
f=r=0;
}
EQ(int Xd,int Xs)
{
DT[r][0]=Xd;
DT[r][1]=Xs;
r=(r+1)%MAX_Q_SIZE;
}
DQ(int &Xd,int &Xs)
{
Xd=DT[f][0];
Xs=DT[f][1];
f=(f+1)%MAX_Q_SIZE;
}
int f,r;
private:
int DT[MAX_Q_SIZE][2]; //0-data[hashed];1-step
}Q[2];
#define PUS(S,Xd,Xs) ({Q[S].EQ(Xd,Xs);HashMap[Xd]=Xs*S_Buff[S];})
#define EMP(S) (Q[S].f==Q[S].r)
int BD_BFS();
int main()
{
char Decod;
for (int i=0;i<=8;++i)
{
cin >>St[i];
cin >>Decod;
if (St[i]=='x') St[i]='0';
}
cout <<BD_BFS()<<endl;
}
inline int EnCode(const puz &x)
{
int ans=x[0]-'0';
for (int i=1;i<=8;++i)
{
ans*=10;
ans+=x[i]-'0';
}
return ans;
}/*C*/
inline void DeCode(int Cd,puz& Xe)
{
int Ti=Cd,Ir;
for (Ir=8;Ir>=0;--Ir)
{
Xe[Ir]=Ti%10+'0';
Ti=Ti/10;
}
}/*C*/
int expand(int sign)
{
#define SWAP(A,B) ({T=Tm[A];Tm[A]=Tm[B];Tm[B]=T;})
int Dr,Se,XLoc;char T;puz Dt,Tm;
Q[sign].DQ(Dr,Se);
DeCode(Dr,Dt);
for (XLoc=0;XLoc<=8;++XLoc) if (Dt[XLoc]=='0') break;
for (int dir=0;dir<=3;++dir)
{
Tm=Dt;SWAP(Tm[Ex_Addr[dir][XLoc]],XLoc);
HashMap.find(
}
}
int BD_BFS()
{
int fr=EnCode(St),bk=EnCode(Gl);
//[Init]
HashMap.clear();
PUS(FR,fr);
PUS(BK,bk);
//[/Init]
do
{
if (!EMP(FR)) expa
}
while (!EMP(BK) || !(EMP(FR)));
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator