手机九宫格加密种数
来源:互联网 发布:mac 怎么设置无线鼠标 编辑:程序博客网 时间:2024/04/30 19:16
加密规则无外乎下面2种
1、任何两个点都可以直接相连。
这个很简单,1到9的基数为9排列相加
运行结果
这种加密方式共有986409种
2、不能隔点相连,这种方式略麻烦
这种加密方式共有38389种
1、任何两个点都可以直接相连。
这个很简单,1到9的基数为9排列相加
#include<stdio.h>char SUDOHU[] = "abcdefghi";int queue[9] = {0};int flag[9] = {0};unsigned int count = 0;void perm(int s, int n){ int i; if(s > n) { return; } if (s == n) { count++; return ; } for (i = 0; i < n; i++) { if (flag[i] == 0) { flag[i] = 1; queue[s] = SUDOHU[i]; perm(s+1, n); flag[i] = 0; } } } int main() { int i; for(i = 1; i <= 9; i++) perm(9 - i, 9); printf("%d\n", count); }
运行结果
这种加密方式共有986409种
2、不能隔点相连,这种方式略麻烦
#include<stdio.h>#include<string.h>char SUDOKU[] = "abcdefghi";char AC_MATCH[] = "bdef";char B_MATCH[] = "acdef";char DF_MATCH[] = "eabcghi";char E_MATCH[] = "abcdfghi";char GI_MATCH[] = "hdef";char H_MATCH[] = "gidef";int queue[9] = {0};int top = 0;int count = 1;int flag[9] = {0};char get_new[] = {0};int byte_match(char pro_byte, char next_byte){int i, flag = 0;switch(pro_byte){case 'a':for(i = 0; i < strlen(AC_MATCH); i++){if(next_byte == AC_MATCH[i]){flag = 1;break;}}break;case 'b':for(i = 0; i < strlen(B_MATCH); i++){if(next_byte == B_MATCH[i]){flag = 1;break;}}break;case 'c':for(i = 0; i < strlen(AC_MATCH); i++){if(next_byte == AC_MATCH[i]){flag = 1;break;}}break;case 'd':for(i = 0; i < strlen(DF_MATCH); i++){if(next_byte == DF_MATCH[i]){flag = 1;break;}}break;case 'e':for(i = 0; i < strlen(E_MATCH); i++){if(next_byte == E_MATCH[i]){flag = 1;break;}}break;case 'f':for(i = 0; i < strlen(DF_MATCH); i++){if(next_byte == DF_MATCH[i]){flag = 1;break;}}break;case 'g':for(i = 0; i < strlen(GI_MATCH); i++){if(next_byte == GI_MATCH[i]){flag = 1;break;}}break;case 'h':for(i = 0; i < strlen(H_MATCH); i++){if(next_byte == H_MATCH[i]){flag = 1;break;}}break;case 'i':for(i = 0; i < strlen(GI_MATCH); i++){if(next_byte == GI_MATCH[i]){flag = 1;break;}}break;}return flag;}void perm(int s, int n){int i, match_flag = 1, new_count = 0;if(s > n){return;}if (s == n){for (i = 0; i < n; i++){if(queue[i] != '\0'){get_new[new_count++] = queue[i];}}for (i = 0; i < strlen(get_new) - 1; i++){if(byte_match(get_new[i], get_new[i + 1]) == 0){match_flag = 0;break;}}if(match_flag){for (i = 0; i < strlen(get_new); i++)printf("%c", get_new[i]);printf(" %d", count++);}printf("\t");return ;}for (i = 0; i < n; i++){if (flag[i] == 0){flag[i] = 1;queue[s] = SUDOKU[i];perm(s+1, n);flag[i] = 0;}}}int main(){int i;for(i = 1; i <= 9; i++)perm(9 - i, 9);}运行结果如下
这种加密方式共有38389种
0 0
- 手机九宫格加密种数
- 手机九宫格滑动解锁方法种数(389112种)
- 手机九宫格密码总数
- 制作手机端九宫格
- leetcode 手机九宫格输入字母组合
- 手机九宫格解锁所有可能
- Android手机九宫格密码解锁
- Html5实现手机九宫格密码解锁功能
- 手机的九宫格图形解锁算法(判断是否合法)
- js仿手机端九宫格登录功能
- 九宫格手机解锁有多少种情况?
- Html5实现手机九宫格密码解锁功能
- Unity制作九宫格手机手势解锁密码
- 用calc()绘制手机图案解锁的九宫格样式
- jQuery微信手机端九宫格抽奖代码特效
- 几种数据加密方法
- 九宫格
- 九宫格
- request.getParameter() 、 request.getInputStream()和request.getReader() 使用体会
- MOCK技术,核心代码!
- Android程序对不同手机屏幕分辨率自适应的总结
- C++学习之auto_ptr智能指针
- 物联网时代,智能家居到底离我们有多远
- 手机九宫格加密种数
- 网络通讯框架-Volley源码分析(2)
- 浅谈Lean UX:我们到底该怎么设计?
- 如何美化你的.net 应用程序 (皮肤使用)
- asp.net中把日期(2014/03/25)和时间(14:00)拼接成完整的时间类型
- linux spi驱动
- 一个简单的demo学习Android远程Service(AIDL的使用
- 基于 sql server 数据库,添加字段,删除字段
- ie下console的问题