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;
}

原文地址:https://www.cnblogs.com/452035305qq/p/6169850.html