#include <stdio.h>
#include <string.h>
int filter[10][10]; //用于存放是否适合连接
int stamp[9]; //用于存放上一次连的是哪个数字
bool vis[10]; //用于标记是否已经用过
int result; //用于输出最后的结果
void dfs(int count)
{
if(count>=4) //只要是大于四个就加一,但是不返回。
{
result++;
}
for(int i=1;i<=9;i++)
{
if(count>0&&!vis[filter[stamp[count-1]][i]])
continue;
if(!vis[i])
{
vis[i]=1;
stamp[count]=i;
dfs(count+1);
vis[i]=0;
}
}
return ;
}
int main()
{
memset(filter,0,sizeof(filter));
filter[1][3]=filter[3][1]=2;
filter[4][6]=filter[6][4]=5;
filter[7][9]=filter[9][7]=8;
filter[1][7]=filter[7][1]=4;
filter[2][8]=filter[8][2]=5;
filter[3][9]=filter[9][3]=6;
filter[1][9]=filter[9][1]=5;
filter[3][7]=filter[7][3]=5;
result=0;
vis[0]=true;
dfs(0);
printf("%d\n",result);
}
手机九宫格解锁所有可能
最新推荐文章于 2019-10-11 09:29:58 发布