水过~
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int map[6][6],vis[10][10][10][10][10][10],num[6],ans;
int movex[4]={0,0,1,-1},movey[4]={1,-1,0,0};
bool isborder(int x,int y)
{
if(x<0||x>=5||y<0||y>=5)
return true;
return false;
}
void DFS(int x,int y,int deep)
{
if(deep==6)
{
if(!vis[num[0]][num[1]][num[2]][num[3]][num[4]][num[5]])
{
vis[num[0]][num[1]][num[2]][num[3]][num[4]][num[5]]=1;
ans++;
}
return;
}
num[deep]=map[x][y];
for(int i=0;i<4;i++)
if(!isborder(x+movex[i],y+movey[i]))
DFS(x+movex[i],y+movey[i],deep+1);
}
int main()
{
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
scanf("%d",&map[i][j]);
memset(vis,0,sizeof(vis));
ans=0;
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
DFS(i,j,0);
printf("%d\n",ans);
return 0;
}