zoukankan      html  css  js  c++  java
  • 关于手机手势解锁共有多少种情况的分析

    • 题目:在九宫格中,任意两个数字可以直接连接,但是某些倾角为45°和90°的连接有特殊限制,例如,1要和3相连的前提是,2也会被连入。1要和9相连,5也会被连入。现在问题就是要求手势解锁共有多少种设置方案。

    解决思路:由于数字一共有九个,因此我们可以使用哈希将那些有特殊限制的点相连的情况存储下来,例如,在2还没有连入的情况下,是不允许1和3相连的,但在2连入的状态下,允许1和3相连。因此,我们将限制情况一 一存储到哈希表中,例如我们存储hash[1][3] = 2。在1要和3连接的时候,我们去判断hash[1][3]是否已经连入,已经连入则1 -> 3是合法的,否则不允许1 -> 3。

    import java.util.*;
    
    public class Solution {
    
        static int[][] hash = new int[10][10];
        static int step;
        static int ans;
        static boolean[] vis = new boolean[10];
    
        public static void dfs(int u) {
            if(step >= 4) {
                ans ++;
            }
            for(int i = 1; i <= 9; i ++) {
                if(!vis[i] && vis[hash[u][i]]) {
                    vis[i] = true;
                    step ++;
                    dfs(i);
                    vis[i] = false;
                    step --;
                }
            }
        }
    
        public static void main(String[] args) {
    
            hash[1][3] = hash[3][1] = 2;
            hash[1][7] = hash[7][1] = 4;
            hash[1][9] = hash[9][1] = 5;
            hash[2][8] = hash[8][2] = 5;
            hash[3][7] = hash[7][3] = 5;
            hash[3][9] = hash[9][3] = 6;
            hash[4][6] = hash[6][4] = 5;
            hash[7][9] = hash[9][7] = 8;
            for(int i = 1; i <= 9; i ++) {
                step = 1;
                vis[0] = true;
                vis[i] = true;
                dfs(i);
                Arrays.fill(vis, false);
            }
            System.out.println(ans);
        }
    
    }
    
    时间并不会因为你的迷茫和迟疑而停留,就在你看这篇文章的同时,不知道有多少人在冥思苦想,在为算法废寝忘食,不知道有多少人在狂热地拍着代码,不知道又有多少提交一遍又一遍地刷新着OJ的status页面…… 没有谁生来就是神牛,而千里之行,始于足下!
  • 相关阅读:
    ESP32学习目录
    python中mysql管理模块mysql-connector使用
    MYSQL基础知识和操作
    urlib补充
    Python3中Urllib库是什么?urllib模块基本使用
    递归:斐波契那数列
    python正则模块一
    模块&包
    XML模块示例代码
    使用python操作XML增删改查
  • 原文地址:https://www.cnblogs.com/bianjunting/p/14801520.html
Copyright © 2011-2022 走看看