九宫锁屏图案有多少种c语言编程,手机九宫格图案解锁问题,编程高手戳进来!...
該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓
數(shù)學(xué)吧里看到的一個有趣問題,題目描述很簡單:
求手機(jī)九宮格圖案解鎖一共有多少種答案。規(guī)則大家應(yīng)該都知道,至少連四個點(diǎn),最多連九個點(diǎn),一條直線上的三個點(diǎn)只有在中間的點(diǎn)已被連過才能直接將兩端點(diǎn)相連,的一種有序的排列。
下面提供一種思路
'''不妨將九個點(diǎn)編號1,2,3,4,5,6,7,8,9;用a,b,c,d,e,f,g,h,i表示每次取的值,用x表示解的個數(shù),若a=3,則稱3被a選擇,或a取3。
下面是大致思路:
1.建立數(shù)組l=[[]*9],其中l(wèi)[j-1]表示初始 情況下數(shù)字j可直接相連的數(shù)字集合
例如l[0]=[2,4,5,6,8] 表示1(在2,5,4未被選擇情況下)可直接與2,4,5,6,8相連
2.a取1或2或5
b取遍l[a-1]
c取遍l[b-1]
………………
3.每次在取下一個數(shù)時,重新修改數(shù)組l
例如在取c時,如果b=2(或4,,6,8)
把l中的2都刪除,并且如果1,3都未被取過時,在l[0]中添加3,在l[2]中添加1
這樣就避免了數(shù)字的重復(fù),以及將213,231的特殊情況也考慮進(jìn)來了
4.再用x統(tǒng)計(jì)循環(huán)次數(shù),輸出的x即表示九個點(diǎn)都取的情況下的解的個數(shù)。
接下來可依次減少i,h,g,f,e同理得到取8,7,6,5,4個點(diǎn)時解的個數(shù)。
具體編程要求助各位編程高手了~\(≥▽≤)/~啦啦啦,一起來碼字吧!!
因?yàn)榫幊陶n還沒有正式開,C語言也還沒學(xué),可能語言有些繁瑣。 下面用python試著寫一下:
'''
#先創(chuàng)建初始數(shù)組
l=[[2,4,5,6,8],[1,3,4,5,6,7,9],[2,4,5,6,8],[1,2,3,5,7,8,9],[1,2,3,4,6,7,8,9],[1,2,3,5,7,8,9],[2,4,5,6,8],[1,3,4,5,6,7,9],[2,4,5,6,8]]
#先求a=1時的解
a=1
for j in range(0,9): #此處將l中所有的1都刪除
for k in l[j]:
if k==1:
p=l[j].index(1)
l[j].pop(p)
for b in l[a-1]:
for j in range(0,9): #此處將l中所有的b都刪除
for k in l[j]:
if k==b:
p=l[j].index(b)
l[j].pop(p)
#表示已經(jīng)出問題了+_+ 怎么把每次b的一次循環(huán)結(jié)束后將l恢復(fù)至刪除b之前的狀態(tài)?!!交給編程大神了。
總結(jié)
以上是生活随笔為你收集整理的九宫锁屏图案有多少种c语言编程,手机九宫格图案解锁问题,编程高手戳进来!...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: legacy驱动
- 下一篇: HDU4847-Wow! Such Do