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