poj3050
#include<stdio.h>
int map[5][5]={ 1,1,1,1,1,
1,1,1,1,1,
1,1,1,1,1,
1,1,1,2,1,
1,1,1,1,1,};
int vist[3][3][3][3][3][3]={0};
int vmap[5][5]={0};
int data[10]={0};
int bu[6]={0};
int mov1[4]={1,-1,0,0};
int mov2[4]={0,0,1,-1};
int count=0;
void go(int step,int x,int y)
{
int nx;
int ny;
if(step==6)
{
if(!vist[bu[0]][bu[1]][bu[2]][bu[3]][bu[4]][bu[5]])
{
vist[bu[0]][bu[1]][bu[2]][bu[3]][bu[4]][bu[5]]=1;
count++;
}
return;
}
for(int i=0;i<4;i++)
{
nx=x+mov1[i];
ny=y+mov2[i];
if(nx>=0&&nx<5&&ny>=0&&ny<5)
{
bu[step]=map[nx][ny];
go(step+1,nx,ny);
}
}
}
int main()
{
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
go(0,i,j);
}
}
printf("%d",count);
return 0;
}