平时使用手机九宫格解锁, 前几天有朋友问一共有多少种解锁方案,然后大概想了想,可以用最简单的DFS来写写, 最终得到的结果是有 `389112` 中可行图案(点数至少为4)
思路
很明显数量不大, 直接DFS也很快, 注意在判断两个点可不可以连接的时候,要特殊考虑。
比如说 九宫格编号如下
0 1 2
3 4 5
6 7 8
比如说 0
和 2
之间如果能连接的话, 1
必须已经出现在路径中。
否则不能直接连接。这里特殊处理就好。另外考虑对称性。
代码
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
int m[3][3]={
{
0,1,2},{
3,4,5},{
6,7,8}};
//conn 三元组0,2,1 表示如果0和2 可以相连,要求1必须已经使用过。抑郁同理