11198 - Dancing Digits(二)
}
}
if(c!=-1)//后插
{
if(j>i)
{
for(int k=0; k
{
str[rear][k][0]=str[front][k][0];
str[rear][k][1]=str[front][k][1];
}
for(int k=j+1; k<8; k++)
{
str[rear][k][0]=str[front][k][0];
str[rear][k][1]=str[front][k][1];
}
for(int k=i; k
{
str[rear][k][0]=str[front][k+1][0];
str[rear][k][1]=str[front][k+1][1];
}
str[rear][j][0]=str[front][i][0];
str[rear][j][1]=str[front][i][1];
}
else
{
for(int k=0; k<=j; k++)
{
str[rear][k][0]=str[front][k][0];
str[rear][k][1]=str[front][k][1];
}
for(int k=i+1; k<8; k++)
{
str[rear][k][0]=str[front][k][0];
str[rear][k][1]=str[front][k][1];
}
for(int k=i; k>j+1; k--)
{
str[rear][k][0]=str[front][k-1][0];
str[rear][k][1]=str[front][k-1][1];
}
str[rear][j+1][0]=str[front][i][0];
str[rear][j+1][1]=str[front][i][1];
}
for(int k=0; k<8; k++) if(str[rear][k][0]!=t[k])
{
flag=1;
break;
}
if(!flag)
{
sum=count[front]+1;
return;
}
else
{
flag=0;
int x=hash(str[rear]);
if(insert(x,rear))
{
count[rear]=count[front]+1;
rear++;
}
}
}
}
front++;
}
}
int main()
{
// freopen("a.txt","r",stdin);
while(scanf("%d",&str[0][0][0])!=EOF)
{
if(!str[0][0][0]) break;
flag=0;
sum=-1;
if(str[0][0][0]>0) str[0][0][1]=1;
else
{
str[0][0][1]=0;
str[0][0][0]=-str[0][0][0];
}
for(int i=1; i<8; i++)
{
scanf("%d",&str[0][i][0]);
if(str[0][i][0]>0) str[0][i][1]=1;
else
{
str[0][i][1]=0;
str[0][i][0]=-str[0][i][0];
}
} www.2cto.com
for(int i=0; i<8; i++)
if(str[0][i][0]!=t[i])
{
flag=1;
break;
}
if(flag)
{
bfs();
printf("Case %d: %d\n",m++,sum);
}
else printf("Case %d: 0\n",m++);
}
return 0;
}