#include "iostream"
using namespace std;
struct weizhi
{
int hen;
int shu;
};
struct jilu
{
int countent;
weizhi *array;
jilu *next;
};
void main()
{
jilu* head;
bool flage1=true,flage2=true;
int array[8][10]={
{1,1,1,1,1,1,1,1,1,1},
{1,0,1,1,1,0,1,1,1,1},
{1,1,0,1,0,1,1,1,1,1},
{1,0,1,0,0,0,0,0,1,1},
{1,0,1,1,1,0,1,1,1,1},
{1,1,0,0,1,1,0,0,0,1},
{1,0,1,1,0,0,1,1,0,1},
{1,1,1,1,1,1,1,1,1,1}};
head=new jilu;
head->countent=0;
head->next=NULL;
jilu* point,*point1,*point2;
point=new jilu;
point->array=new weizhi[1];
point->array[0].hen=1;
point->array[0].shu=1;
point->countent=1;
point->next=head->next;
head->next=point;
while (flage1)
{
flage1=false;
point2=head;
point1=head->next;
while (point1)
{
if (point1->array[point1->countent-1].hen==6&&point1->array[point1->countent-1].shu==8)
{
point2=point1;
point1=point1->next;
continue;
}
if (array[point1->array[point1->countent-1].hen+1][point1->array[point1->countent-1].shu]==0)
{
for (int i=0;i<point1->countent;i++)
{
if ((point1->array[i].hen==point1->array[point1->countent-1].hen+1)&&(point1->array[i].shu==point1->array[point1->countent-1].shu))
{
flage2=false;
}
}
if (flage2)
{
point=new jilu;
point->countent=point1->countent+1;
point->array=new weizhi[point->countent];
for (int i=0;i<point1->countent;i++)
{
point->array[i].hen=point1->array[i].hen;
point->array[i].shu=point1->array[i].shu;
}
point->array[i].hen=point1->array[point1->countent-1].hen+1;
point->array[i].shu=point1->array[point1->countent-1].shu;
point->next=point1->next;
point2->next=point;
point2=point;
if (point->array[point->countent-1].hen!=6&&point->array[point->countent-1].shu!=8)
{
flage1=true;
}
head->countent++;
}
flage2=true;
}
if (array[point1->array[point1->countent-1].hen+1][point1->array[point1->countent-1].shu+1]==0)
{
for (int i=0;i<point1->countent;i++)
{
if ((point1->array[i].hen==point1->array[point1->countent-1].hen+1)&&(point1->array[i].shu==point1->array[point1->countent-1].shu+1))
{
flage2=false;
}
}
if (flage2)
{
point=new jilu;
point->countent=point1->countent+1;
point->array=new weizhi[point->countent];
for (int i=0;i<point1->countent;i++)
{
point->array[i].hen=point1->array[i].hen;
point->array[i].shu=point1->array[i].shu;
}
point->array[i].hen=point1->array[point1->countent-1].hen+1;
point->array[i].shu=point1->array[point1->countent-1].shu+1;
point->next=point1->next;
point2->next=point;
point2=point;
if (point->array[point->countent-1].hen!=6&&point->array[point->countent-1].shu!=8)
{
flage1=true;
}
head->countent++;
}
flage2=true;
}
if (array[point1->array[point1->countent-1].hen][point1->array[point1->countent-1].shu+1]==0)
{
for (int i=0;i<point1->countent;i++)
{
if ((point1->array[i].hen==point1->array[point1->countent-1].hen)&&(point1->array[i].shu==point1->array[point1->countent-1].shu+1))
{
flage2=false;
}
}
if (flage2)
{
point=new jilu;
point->countent=point1->countent+1;
point->array=new weizhi[point->countent];
for (int i=0;i<point1->countent;i++)
{
point->array[i].hen=point1->array[i].hen;
point->array[i].shu=point1->array[i].shu;
}
point->array[i].hen=point1->array[point1->countent-1].hen;
point->array[i].shu=point1->array[point1->countent-1].shu+1;
point->next=point1->next;
point2->next=point;
point2=point;
if (point->array[point->countent-1].hen!=6&&point->array[point->countent-1].shu!=8)
{
flage1=true;
}
head->countent++;
}
flage2=true;
}
if (array[point1->array[point1->countent-1].hen-1][point1->array[point1->countent-1].shu+1]==0)
{
for (int i=0;i<point1->countent;i++)
{
if ((point1->array[i].hen==point1->array[point1->countent-1].hen-1)&&(point1->array[i].shu==point1->array[point1->countent-1].shu+1))
{
flage2=false;
}
}
if (flage2)
{
point=new jilu;
point->countent=point1->countent+1;
point->array=new weizhi[point->countent];
for (int i=0;i<point1->countent;i++)
{
point->array[i].hen=point1->array[i].hen;
point->array[i].shu=point1->array[i].shu;
}
point->array[i].hen=point1->array[point1->countent-1].hen-1;
point->array[i].shu=point1->array[point1->countent-1].shu+1;
point->next=point1->next;
point2->next=point;
point2=point;
if (point->array[point->countent-1].hen!=6&&point->array[point->countent-1].shu!=8)
{
flage1=true;
}
head->countent++;
}
flage2=true;
}
if (array[point1->array[point1->countent-1].hen-1][point1->array[point1->countent-1].shu]==0)
{
for (int i=0;i<point1->countent;i++)
{
if ((point1->array[i].hen==point1->array[point1->countent-1].hen-1)&&(point1->array[i].shu==point1->array[point1->countent-1].shu))
{
flage2=false;
}
}
if (flage2)
{
point=new jilu;
point->countent=point1->countent+1;
point->array=new weizhi[point->countent];
for (int i=0;i<point1->countent;i++)
{
point->array[i].hen=point1->array[i].hen;
point->array[i].shu=point1->array[i].shu;
}
point->array[i].hen=point1->array[point1->countent-1].hen-1;
point->array[i].shu=point1->array[point1->countent-1].shu;
point->next=point1->next;
point2->next=point;
point2=point;
if (point->array[point->countent-1].hen!=6&&point->array[point->countent-1].shu!=8)
{
flage1=true;
}
head->countent++;
}
flage2=true;
}
if (array[point1->array[point1->countent-1].hen-1][point1->array[point1->countent-1].shu-1]==0)
{
for (int i=0;i<point1->countent;i++)
{
if ((point1->array[i].hen==point1->array[point1->countent-1].hen-1)&&(point1->array[i].shu==point1->array[point1->countent-1].shu-1))
{
flage2=false;
}
}
if (flage2)
{
point=new jilu;
point->countent=point1->countent+1;
point->array=new weizhi[point->countent];
for (int i=0;i<point1->countent;i++)
{
point->array[i].hen=point1->array[i].hen;
point->array[i].shu=point1->array[i].shu;
}
point->array[i].hen=point1->array[point1->countent-1].hen-1;
point->array[i].shu=point1->array[point1->countent-1].shu-1;
point->next=point1->next;
point2->next=point;
point2=point;
if (point->array[point->countent-1].hen!=6&&point->array[point->countent-1].shu!=8)
{
flage1=true;
}
head->countent++;
}
flage2=true;
}
if (array[point1->array[point1->countent-1].hen][point1->array[point1->countent-1].shu-1]==0)
{
for (int i=0;i<point1->countent;i++)
{
if ((point1->array[i].hen==point1->array[point1->countent-1].hen)&&(point1->array[i].shu==point1->array[point1->countent-1].shu-1))
{
flage2=false;
}
}
if (flage2)
{
point=new jilu;
point->countent=point1->countent+1;
point->array=new weizhi[point->countent];
for (int i=0;i<point1->countent;i++)
{
point->array[i].hen=point1->array[i].hen;
point->array[i].shu=point1->array[i].shu;
}
point->array[i].hen=point1->array[point1->countent-1].hen;
point->array[i].shu=point1->array[point1->countent-1].shu-1;
point->next=point1->next;
point2->next=point;
if (point->array[point->countent-1].hen!=6&&point->array[point->countent-1].shu!=8)
{
flage1=true;
}
head->countent++;
}
flage2=true;
}
if (array[point1->array[point1->countent-1].hen+1][point1->array[point1->countent-1].shu-1]==0)
{
for (int i=0;i<point1->countent;i++)
{
if ((point1->array[i].hen==point1->array[point1->countent-1].hen+1)&&(point1->array[i].shu==point1->array[point1->countent-1].shu-1))
{
flage2=false;
}
}
if (flage2)
{
point=new jilu;
point->countent=point1->countent+1;
point->array=new weizhi[point->countent];
for (int i=0;i<point1->countent;i++)
{
point->array[i].hen=point1->array[i].hen;
point->array[i].shu=point1->array[i].shu;
}
point->array[i].hen=point1->array[point1->countent-1].hen+1;
point->array[i].shu=point1->array[point1->countent-1].shu-1;
point->next=point1->next;
point2->next=point;
point2=point;
if (point->array[point->countent-1].hen!=6&&point->array[point->countent-1].shu!=8)
{
flage1=true;
}
head->countent++;
}
flage2=true;
}
if (point2->next==point1)
{
point2->next=point1->next;
delete []point1->array;
delete point1;
point1=point2->next;
head->countent--;
}
else
{
delete []point1->array;
delete point1;
point1=point2->next;
head->countent--;
}
}
}
point=head->next;
cout<<head->countent<<"\n";
while (point)
{
cout<<point->countent<<" ";
for (int i=0;i<point->countent;i++)
{
cout<<"("<<point->array[i].hen<<","<<point->array[i].shu<<") ";
}
cout<<"\n";
point=point->next;
}
}