手机锁算法
解锁原理:随便从一个开始,连接下一个,再连
下一个,再下一个.就可以了(不能有重复的)
用邻接矩阵方法构造:
edge[9][9]={{0,1,0,1,1,1,0,1,0},
{1,0,1,1,1,1,1,0,1},
{0,1,0,1,1,1,0,1,0},
{1,1,1,0,1,0,1,1,1},
{1,1,1,1,0,1,1,1,1},
{1,1,1,0,1,0,1,1,1},
{0,1,0,1,1,1,0,1,0},
{1,0,1,1,1,1,1,0,1},
{0,1,0,1,1,1,0,1,0}};
比如我们把图标号.如从0开始就可以
0 7 8 3
但不能
0 8,
关于这个锁的有多少种.算出来是152
代码如下:
程序代码:
#include using namespace std; void main(){ int i,j,k,l,z,count; //char vex[9];//顶点表 int edge[9][9]={{0,1,0,1,1,1,0,1,0},{1,0,1,1,1,1,1,0,1},{0,1,0,1,1,1,0,1,0},{1,1,1,0,1,0,1,1,1},{1,1,1,1,0,1,1,1,1},{1,1,1,0,1,0,1,1,1},{0,1,0,1,1,1,0,1,0},{1,0,1,1,1,1,1,0,1},{0,1,0,1,1,1,0,1,0}};//邻接矩阵,即边表 int vnum=9; count=0; int visited[9];//定义~~~^^^^^^^^^^^^^^^^^^^ for(i=0;i }