• [编程题]手机屏幕解锁模式


     

     

    class Solution {
    public:
        int vis[3][3];
        int ans[10];
        int dir[16][2] = {       //16个方向
            { -1, 0 }, { -1, 1 }, { 0, 1 }, { 1, 1 },
            { 1, 0 }, { 1, -1 }, { 0, -1 }, { -1, -1 },
            {-2, 1 }, { -1, 2 }, { 1, 2 }, { 2, 1 },
            { 2, -1 }, { 1, -2 }, { -1, -2 }, { -2, -1 }
        };
        void dfs(int x, int y, int t)
        {
            if (9 == t)
            {
                return;
            }
            ans[t++]++;
            vis[x][y] = 1;
            for (int i = 0; i < 16; i++)
            {
                int dx = x + dir[i][0];
                int dy = y + dir[i][1];
                if (0 <= dx && dx < 3 && dy >= 0 && dy < 3 && vis[dx][dy] == 0)
                {
                    dfs(dx, dy, t);
                }
                //如果前8个方向都走过了,可以沿着当前方向在走一步
                else if (i < 8)
                {
                    dx = dx + dir[i][0];
                    dy = dy + dir[i][1];
                    if (0 <= dx && dx < 3 && dy >= 0 && dy < 3 && vis[dx][dy] == 0)
                    {
                        dfs(dx, dy, t);
                    }
                }
            }
            vis[x][y] = 0;
            return;
        }
        int solution(int m, int n) {
            memset(ans, 0, sizeof(ans));
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    memset(vis, 0, sizeof(vis));
                    dfs(i, j, 1);
                }
            }
            int num = 0;
            if (m > n)
                return 0;
            else {
                if (n > 9)
                    n = 9;
                ans[9] = ans[8];
                for (int i = m; i <= n; i++) {
                    num = num + ans[i];
                }
                return num;
            }
    
    
        }
    };

    https://www.nowcoder.com/questionTerminal/c552248efdbd41a18d35b7a2329f7ad8

  • 相关阅读:
    OCP-1Z0-052-V8.02-167题
    OCP-1Z0-052-V8.02-172题
    OCP-1Z0-052-V8.02-178题
    OCP-1Z0-052-V8.02-180题
    OCP-1Z0-052-V8.02-84题
    OCP-1Z0-052-V8.02-86题
    OCP-1Z0-052-V8.02-85题
    OCP-1Z0-052-V8.02-83题
    OCP-1Z0-052-V8.02-76题
    OCP-1Z0-052-V8.02-75题
  • 原文地址:https://www.cnblogs.com/-citywall123/p/13050958.html
Copyright © 2020-2023  润新知