之前在学校的一个社团招募大一噺生时给出了这个题目:
用程序编写完成九宫格图案解锁总共能绘出多少种图案
2.不能重复经过同一个点;3.路径上的中间点不能跳过(如從1到3一定会经过2);
4.如果中间的点是之前已经用过的,那么这个点就可以被跳过(如213因为2已经被用过,1就可以越过2与3连接132是不允许的)。
当时就在想出这道题的社团负责人脑子是不是瓦特掉了,给大一的小孩子们刚开始就下这么猛的料
问题跟我们的生活息息相关,畢竟现在大家都用的智能手机看到题目后立马想到了用递归算法来完成此问题。后来抽空闲时间用C语言编写出了此程序。
第一个函数init為数组初始化函数;第二个函数decide判断当前手势顺序是否符合要求;第三个函数deal为递归函数程序结构并不复杂,不做过多的论述
程序中宏M的取值为3,代表当前计算的是三宫格宏M的取值可以改为不同的值,代表计算不的格数但同时程序运行的时间开销会大大增加。笔者茬完成此程序时并没有太考虑程序的时间开销方面的问题。
程序算法采用了递归算法思想上使用了穷举的思想。
最后运行结果为:389112囧哈,证明我们采用九宫格手势做手机开机解锁在理论上还是蛮安全的
积分 175, 距离下一级还需 25 积分 积分 175, 距離下一级还需 25 积分
|
|
||
你对这个回答的评价是
有多少個呢?一共有什么公式吗?
你对这个回答的评价是
你对这个回答的评价是?
你对这个回答的评价是