九宫格(安卓手机的图形锁有几种解锁图案)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>// ______ //// //// 定义全局变量 //// //// ~~~~~~ ////记忆哪个位置放了结点的数组
int record[3][3]={0};//计数(有多少种情况)变量
int count=0;//记录待放入的结点的前一个结点的坐标(通过函数查找后暂时放在这里)
int iBefTemp=-1,jBefTemp=-1;// ______ //// //// 主函数 //// //// ~~~~~~ //int main()
{//函数声明void befNodePos(int n);int checkLine(int i);int checkList(int j);int checkCorner(int i,int j);void print(int a[3][3]);int ifCanPut(int i,int j,int n);int askIfPrint();void putInTurn(int n,int sumNum,int ifPrint);//主函数中的变量定义int i,sumSolution=0;int rememberPrint;//确定是否进行打印所有情况rememberPrint=askIfPrint();for(i=1;i<=9;i++){putInTurn(1,i,rememberPrint);sumSolution+=count;printf("\t当连接%d个点时候有%d种连法\n\t\t累计至此有%d种连法\n\n\n",i,count,sumSolution); count=0;}printf("\n\n所以,总共有%d种可能的连接方法。\n\n\n",sumSolution);return 0;
}// ______ //// //// 其他函数定义 //// //// ~~~~~~ ////找到前一个结点的坐标并将坐标值放置在全局变量iBefTemp和jBefTemp里
void befNodePos(int n)
{int i,j;for(i=0;i<3;i++){for(j=0;j<3;j++){if(record[i][j]==n-1){iBefTemp=i;jBefTemp=j;return;}}}}//判断间隔位置是否有结点放置。(横向判断)
int checkLine(int i)
{if(record[i][1]==0)return 0;elsereturn 1;
}//判断间隔位置是否有结点放置。(纵向判断)
int checkList(int j)
{if(record[1][j]==0)return 0;elsereturn 1;
}//判断ij位置是否为顶角位置
int checkCorner(int i,int j)
{if(i+j==2&&i!=j||i+j==0||i+j==4)return 1;elsereturn 0;
}//打印的函数
void print(int a[3][3])
{int i,j;for(i=0;i<3;i++){for(j=0;j<3;j++){printf("%3d",a[i][j]);}printf("\n");}printf("\n");getch();
}//询问是否打印所有情况
int askIfPrint()
{int boo;printf("\n\n\t\t\t九宫格锁屏程序\n\n");printf("你是否想知道每一次的具体连法:\n");printf("1.是的,我想看看具体是怎么连的。(提示:情况非常之多)\n");printf("2.不,我不必知道具体都是怎么连的,我只想知道有多少种情况。\n\t\t我选择:");scanf("%d",&boo);if(boo==1)return 1;elsereturn 0;
}// _________________ //// //// 判断能否放在ij位置 //// //// ~~~~~~~~~~~~~~~~~~ //int ifCanPut(int i,int j,int n)
{//如果这个位置还没有放置结点if(record[i][j]==0){//找到前一个结点的坐标放在全局变量里面//如果是在放置第一个结点,则不必找它的前一个结点,任何一个位置都是合适的。if(n==1){//因为是放置第一个结点,所以不必判断它跟前一个结点的关系return 1;}//放置除了第一个结点之外的结点,需要判断它个前一个结点的关系。else if(n<=9){ iBefTemp=-1;jBefTemp=-1;befNodePos(n);//当中间有间隔位置时(横向判断)。if(i==iBefTemp&&abs(j-jBefTemp)==2){//判断间隔位置是否有结点放置。if(checkLine(i)){//已经有结点//可以放置........return 1;}else{//没有结点放置///不能放置在ij这里return 0;}}//当中间有间隔位置时(纵向判断)。else if(j==jBefTemp&&abs(i-iBefTemp)==2){//判断间隔位置是否有结点放置。if(checkList(j)){//已经有结点//可以放置.............return 1;}else{//没有结点//不能放置在ij这里return 0;}}//当二者为对角关系时else if(checkCorner(i,j)&&checkCorner(iBefTemp,jBefTemp)&&(i!=iBefTemp&&j!=jBefTemp)){//判断中间位置是否有结点放置。if(record[1][1]!=0){//中间位置已经放置了结点//可以放置在ij......return 1;}else{//中间位置没有放置结点,不能放置在ijreturn 0;} }//二者中间没有间隔位置,从而可以直接放置。else{//可以放置...........return 1;}}}//如果这个位置已经放置了结点,不能放置结点else{return 0;}}// ______ //// //// 主算法 //// //// ~~~~~~ //void putInTurn(int n,int sumNum,int ifPrint)
{int i,j;if(n==sumNum+1){//已经放置完9个结点,进行计数。count++;if(ifPrint){print(record);}return;}//尝试将其放置在i行j列。for(i=0;i<3;i++){for(j=0;j<3;j++){if(ifCanPut(i,j,n)){record[i][j]=n;putInTurn(n+1,sumNum,ifPrint);//这个语句很重要!这是递归能否进行的决定性语句。record[i][j]=0;}}}}
九宫格(安卓手机的图形锁有几种解锁图案)相关推荐
- android查ip地址,安卓手机查看IP地址的两种方法, 二、进入手机状态
安卓手机查看IP地址的两种方法, 二.进入手机状态 无论是电脑链接宽带上网还是手机链接wifi上网,当我们在链接网络后,会自动分配一个独立的IP地址,对于电脑端的上网IP地址我们可通过ipconfig ...
- android 图案解锁忘记了,安卓手机忘记图形解锁、锁屏密码的解决方法
Android 手机的图形解锁倒是真的好用了,主要是方便新颖,并且便于记忆,自从有了图形解锁,很多人都不再使用密码屏幕锁了,图形解锁倒是好玩,但是经常换来换去的话就会造成一时间想不起哪个图形解锁图案才 ...
- 华为、小米、红米、魅族、oppo、三星、vivo安卓手机解除账户锁
为大家分享解除安卓手机账户锁的经验.为什么说是经验呢,因为故事是这样开始的(嫌啰嗦的直接看红色字): 朋友买了新手机,我就向他要旧手机用. 但我刷机把他这手机刷坏了(魅族mx4),无限重启.不能进入卡 ...
- java里面常用的锁屏图案_最常用的100种解锁图案(附:手机图案万能解锁法)...
说到九宫格解锁,相信很多用户都认识,日常使用手机中,将锁屏设置成九宫格图案,不仅可以保护个人隐私,还可增加手机解锁的趣味性,对此,很多机智的网友脑洞大开设计了一系列解锁图案,通过不同的组合方式将解锁图 ...
- android ip查看工具,安卓手机查看IP地址的两种方法
无论是电脑链接宽带上网还是手机链接wifi上网,当我们在链接网络后,会自动分配一个独立的IP地址,对于电脑端的上网IP地址我们可通过ipconfig/all命令来查看,那么如果在手机端的话应该如何查看 ...
- android 自动锁屏设置,如何才能使安卓手机不自动锁屏?改成自动黑屏,谢谢
一.线刷 用刷机软件,比如刷机大师.刷机精灵.卓大师.深度刷机.奇兔刷机.甜椒 二.卡刷 进入Recovery模式卡刷 进入Recovery模式方法: 方法一:如果手机是开机状态,请先关机,抠下电池再 ...
- android wifi 静态地址设置_安卓手机连接wifi故障的6种常见解决方法
现如今,人们已经离不开wifi的使用了,有了wifi,流量不够用什么的都是浮云.如果手机连接wifi出了问题怎么办?不要抓狂不要沮丧,六招让你手机wifi满血复活! 第一招:关闭并重启WIFI连接 用 ...
- 小程序富文本解析wxParse 安卓手机部分不支持的一种情形
背景: 建议,对富文本的解析,还是使用官方提供的 <rich-text> 比较好,可参考文章:微信小程序 rich-text 富文本的解析显示 在小程序开发过程中,必然会涉及到富文本的解析 ...
- 如何破解安卓手机上的图形锁(九宫格锁)
http://mobile.51cto.com/iphone-441496.htm 安卓手机的图形锁(九宫格)是3×3的点阵,按次序连接数个点从而达到锁定/解锁的功能.最少需要连接4个点,最多能连接9 ...
- 基于Python的安卓图形锁破解程序
安卓手机的图形锁是3x3的点阵,按次序连接数个点从而达到锁定/解锁的功能.最少需要连接4个点,最多能连接9个点.网上也有暴力删除手机图形锁的方法,即直接干掉图形锁功能.但假如你想进入别人的手机,但又不 ...
最新文章
- JRebel for IntelliJ 热部署方法
- pytorch 实现transformer
- Linux 在一个命令行上执行多个命令
- Happy Holidays and Season's Greetings Everyone!
- 固件是通用的吗_如何升级AirPods固件?
- 为什么系统调用会消耗较多资源?系统调用的三种方法:软件中断(分析过程)、SYSCALL指令、vDSO(虚拟动态链接对象linux-vdso.so.1)
- java多线程基础_java线程基础
- R与Python或协同助力机器学习:听Azure ML Studio讲座有感
- linux中安装mysql5.1.73_linux安装mysql(5.1.73)
- Atitit linux获取项目运行环境版本
- 金蝶KIS财务软件如何查看去年的账套
- Android截图功能
- CentOS 7下atime如何变化的问题(转)
- 机器学习笔记1.矩估计、极大似然估计。
- Gsensor驱动概述
- 河北计算机软件职业技术学院,河北软件职业技术学院
- windows 进程监控 Procmon.exe
- 虚函数多态性实现求几何图形面积
- mongdb compass 可视化工具的使用
- 归并排序实现(JAVA)
热门文章
- 静态分析之数据流分析与 SSA 入门 (一)
- buuctf_[ACTF新生赛2020]swp
- 格拉姆矩阵(Gram matrix)详细解读
- 【论文整理】风格迁移中格拉姆矩阵(Gram Matrix)的使用
- 360又抢了12306的风头:它为什么能提前49天订票?
- 超声波传感器(CHx01) 学习笔记 Ⅵ - 原始数据
- springboot 2.X——短信网关使用初体验
- 自动驾驶轨迹规划--算法综述
- 集合框架ArrayList 源码分析(二)
- ValueError: y contains previously unseen labels: ‘103125‘