标签:space 方向 blog 越界 void 输入 div names name
#include <stdio.h>
#include <set>
#include <string>
using namespace std;
int a[6];
int b[6];
int c[1000];
int h=0;
int grid[5][5]; //输入的网格
int go[4][2] =
{
0, 1,
0, -1,
1, 0,
-1, 0
}; //四个方向
int safe(int y,int x)
{
int r=1;
if (x< 0 || x >= 5 || y < 0 || y >= 5)
{
r=0;
}
return r;
}
//深度搜索
void dfs(int row, int col, int step)
{
if (step == 6) //满6个,存到set里
{
int num=0;
int flag=1;
for(int i=0;i<6;i++)
b[i]=a[i];
num=b[0]+b[1]*10+b[2]*100+b[3]*1000+b[4]*10000+b[5]*100000;
for(int i=0;i<h;i++)
{
if(num==c[i])
flag=0;
}
if(flag==0)
return ;
if(flag==1)
{
c[h++]=num;
}
return ;
}
for (int i = 0; i < 4; i++) //4个方向深度搜索
{
//越界判断
if (safe(row,col))
{
a[step]=grid[row][col];
int tr = row + go[i][0];
int tc = col + go[i][1];
dfs(tr, tc, step + 1);
}
}
}
int main()
{
//输入
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
scanf("%d", &grid[i][j]);
//处理
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
dfs(i, j, 0);
}
}
printf("%d\n",h);
return 0;
}
标签:space 方向 blog 越界 void 输入 div names name
原文地址:http://www.cnblogs.com/liunx1109/p/6165247.html