手機的九宮格圖形解鎖演算法(判斷是否合法)
從HDU 5641有感。
連結如下HDU 5641
題意:給你一段密碼序列,讓你判斷合不合法.比如 3->4->2->7 這個就是合法的,但是 3->7->2->4就是不合法的.
程式碼如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#define MS(x,y) memset(x,y,sizeof(x))
using namespace std;
int num[10],k;
bool chose[10][10];
bool chos[10];
//打表判斷9個點初始不能到達的點
void init()
{
MS(chose,true);
MS(chos,false);
chose[1][3]=false;
chose[1][7]=false;
chose[1][9]=false;
chose[2][8]=false;
chose[3][1]=false;
chose[3][9]=false;
chose[3][7]=false;
chose[4][6]=false;
chose[6][4]=false;
chose[7][1]=false;
chose[7][3]=false;
chose[7][9]=false;
chose[8][2]=false;
chose[9][1]=false;
chose[9][3]=false;
chose[9][7]=false;
}
bool judge()
{
int i,j;
//判斷有沒有相同點
for(i=0;i<k-1;++i){
for(j=i+1;j<k;++j)
{
if(num[j]==num[i])
return false;
}
}
for(i=0;i<k-1;++i)
{
chos[num[i]]=true;
if(!chose[num[i]][num[i+1]])
{
if(!chos[(num[i]+num[i+1])/2]) ////中間點沒有經過
return false;
}
///路徑上的中間點不能跳過,除非已經被經過
for(j=1;j<=9;++j)
{
// if(j==num[i]) continue;
if(!chose[num[i]][j])
{
if(chose[num[i+1]][j])
{
chose[num[i]][j]=true;
chose[j][num[i]]=true;
}
}
}
/*
123
456
789
4 6->2->1->3
4 3->8->2->5
*/
}
return true;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
init();
bool flag=false;
memset(num,0,sizeof(num));
scanf("%d",&k);
for(int i=0;i<k;++i)
{
scanf("%d",&num[i]);
if(num[i]<1||num[i]>9)
flag=true;
}
if(k<4||flag)
{
printf("invalid\n");
continue;
}
if(judge())
printf("valid\n");
else
printf("invalid\n");
}
return 0;
}
相關文章
- Html5實現手機九宮格密碼解鎖功能HTML密碼
- 小程式—九宮格心形拼圖
- 判斷URL字串是否合法字串
- iOS-九宮格密碼解鎖iOS密碼
- C#判斷字串是否合法C#字串
- 判斷字串是否是合法的EMail (轉)字串AI
- android判斷手機是否rootAndroid
- jquery 判斷email地址是否合法並儲存jQueryAI
- python九宮格圖片的原理Python
- 教你寫一個九宮格鎖屏ViewView
- InnoDB事務鎖之行鎖-判斷是否有隱式鎖原理圖
- css 九宮格CSS
- 遊戲九宮格遊戲
- 九宮格抽獎–手擼程式碼
- 判斷url連結地址是否合法的例項程式碼
- JavaScript判斷是否是手機mobile登入JavaScript
- 用scanf_s判斷輸入資料是否合法
- java字串、異常小練習--判斷qq是否合法Java字串
- 判斷手機是否安裝app的javascript程式碼APPJavaScript
- 判斷點是否在多邊形內斷點
- ASP.NET判斷是否為手機登入ASP.NET
- Android程式碼判斷手機是否已rootAndroid
- iOS swift 最好用的 手勢密碼 九宮格iOSSwift密碼
- js版九宮格拼圖與啟發式搜尋(A*演算法)JS演算法
- PHP判斷是否手機端或PC端訪問PHP
- 判斷點是否在多邊形內部斷點
- 數獨遊戲九宮格遊戲
- Java解世界最難九宮格問題Java
- 九宮格切圖-創意分享新風尚
- 使用JavaScript判斷使用者是否為手機裝置JavaScript
- Flutter 仿微信/微博九宮格Flutter
- iOS開發-如何判斷手機是否開啟了放大模式iOS模式
- 判斷img圖片是否載入成功
- php網站判斷使用者是否是手機訪問的方法PHP網站
- 【js基礎】判斷是否是合法郵箱地址(正規表示式的應用)JS
- PHP判斷檔案是否為圖片的方法PHP
- 自定義九宮格載入的實現
- 如何判斷字串是否為合法數值、浮點、科學計數等格式字串