Leetcode 351 Solution
This article provides solution to leetcode question 351 (android-unlock-patterns)
Access this page by simply typing in "lcs 351" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/android-unlock-patterns
Solution
class Solution {
int a[3][3] = {0};
public:
int count(int y, int x, int layer, int m, int n)
{
if (layer > n)
return 0;
a[y][x] = 1;
int res = layer >= m;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (a[i][j] == 1)
continue;
if (i == y && abs(j - x) == 2 && a[i][1] == 0)
continue;
else if (j == x && abs(i - y) == 2 && a[1][j] == 0)
continue;
else if (abs(i - y) == 2 && abs(j - x) == 2 && a[1][1] == 0)
continue;
res += count(i, j, layer + 1, m, n);
}
}
a[y][x] = 0;
return res;
}
int numberOfPatterns(int m, int n)
{
int total = 0;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
total += count(i, j, 1, m, n);
return total;
}
};