八数码变成了11数码,方法不变,注意如果步数已经>20,就可以直接退出了;
用的双广,map标记,看来我其实还不会双广,跑了4187Ms,差点没过呀.
看着讨论区,有个人用双广200+ms过的,太猛了.....
居然还有0ms的 ...Orz...
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<string>
#include<iostream>
#include<stdlib.h>
#include<queue>
#include<map>
#include<sstream>
using namespace std;
struct node
{
int a[15];
string s;
int t;
int z1,z2;//两个0的位置
};
queue<node>sq,eq;
map<string,int>sm,em;
int tCase,a[15],ans;
const string se="012345678910110";
int d[13][5]={
{2,-1},{2,5,-1},{0,1,3,6,-1},{2,7,-1},{5,-1},{1,4,6,9,-1},{2,5,7,10,-1},{3,6,8,11,-1},{7,-1},{5,10,-1},{6,9,11,12,-1},{7,10,-1