#include<stdio.h>
#include<math.h>
int N;
typedef struct team{
int number;//编号
int a[3][8];//行代表柱子,列代表盘子,若i柱子上有j盘子,则a[i][j]=1,否则为0
int cur;//前驱节点
};
team t0,tg,temp,newing;
void initteam()
{
int i,j;
t0.number=1;
for(j=0;j<N;j++)
t0.a[0][j]=1;
for(i=1;i<3;i++)
for(j=0;j<N;j++)
t0.a[i][j]=0;
t0.cur=0;
for(i=0;i<2;i++)
for(j=0;j<N;j++)
tg.a[i][j]=0;
for(j=0;j<N;j++)
tg.a[2][j]=1;
}
#define stacksize 100
typedef struct{
team st[stacksize];
int top;
}stack;
stack open,closed,exchg;
//栈的初始化
void initstack(stack &s)
{
s.top=-1;
}
//进栈
int push(stack &s,team &x)
{
if(s.top==stacksize-1)
return 0;
s.top++;
s.st[s.top]=x;
return 1;
}
//出栈
int pop(stack &s,team &x)
{
x=s.st[s.top];
s.top--;
return 1;