Advertisement
lifeiteng

351. Android Unlock Patterns

Sep 23rd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.14 KB | None | 0 0
  1. class Solution {
  2.     public int numberOfPatterns(int m, int n) {
  3.         for(int i = m; i <= n; i++)
  4.         {
  5.             // for each length
  6.             for(int j = 0; j < 9; j++)
  7.             {
  8.                 used = 1 << j;
  9.                 dfs(i, 1, j);
  10.             }
  11.         }
  12.         return re;
  13.     }
  14.    
  15.     void dfs(int cap, int count, int cur)
  16.     {
  17.         if(count == cap)
  18.         {
  19.             re++;
  20.             return;
  21.         }
  22.         int row = cur / 3, col = cur % 3;
  23.         for(int i = 0; i < 9; i++)
  24.         {
  25.             if((used & (1 << i)) != 0) continue;
  26.             int nr = i / 3, nc = i % 3, dr = nr - row, dc = nc - col,
  27.             adr = Math.abs(dr), adc = Math.abs(dc);
  28.             if(adr == 0 && adc == 2 || adr == 2 && adc == 0 ||
  29.                 adr == 2 && adc == 2)
  30.             {
  31.                 int mrow = dr / 2 + row, mcol = dc / 2 + col,
  32.                 mid = mrow * 3 + mcol;
  33.                 if((used & (1 << mid)) == 0) continue;
  34.             }
  35.             used |= 1 << i;
  36.             dfs(cap, count + 1, i);
  37.             used &= ~(1 << i);
  38.         }
  39.     }
  40.    
  41.     int re = 0, used = 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement