python實現完美數匹配問題

2021-10-09 07:57:30 字數 2332 閱讀 1324

這裡面我們是要在原串中,匹配完美數的排列,從而篩選出是否有符合完美數的特徵。

這裡,我的思路就是,先匹配完美排列的外觀值,如果c陣列中,匹配到了,那麼就開始判斷匹配到的外觀值對應的玩具**是否和完美排列的一致。如果一致,那麼就輸出這個完美排列在c中的起始位置。不然就輸出0。

當然,為了減小時間複雜度,我們還是採用剪枝的思想。就是排除掉一些沒有必要的迴圈。

如果flag為1了,那麼直接返回,結束函式

如果完美組合已經遍歷完了,那麼我們就直接結束函式

def

numinout()

:"""

@:param k: 完美排列的長度

@:param a: 完美排列的外觀

@:param b: 完美排列的價值

@:param n: 玩具總數

@:param c: 玩具的外觀值

@:param d: 玩具的價值

:return:

"""global k,a,b,c,d,n

k =int(

input()

) a =

input()

.split(

) b =

input()

.split(

) n =

int(

input()

) c =

input()

.split(

) d =

input()

.split(

)def

dfs(pindex,cindex)

:"""

:param pindex:記錄的是完美排列的下標

:param cindex:c陣列的下標

:return:

"""global flag,indexe

# 如果下標加2已經超了,說明沒有匹配到的了。

if cindex !=

0and a[pindex]

!= c[cindex]

: pindex =

0return

false

# flag被設定成了1,就沒有繼續查下去的必要了。

if flag ==1:

return indexe

# 如果完美組合已經被查完了,那麼就直接結束

if pindex >=2:

flag =

1 indexe = cindex-

2return indexe

for i in

range

(cindex,

len(c)):

if a[pindex]

== c[i]

:if pindex ==2:

break

dfs(pindex+

1,i+1)

else

: pindex =

0if __name__ ==

'__main__'

: flag =

0 pindex =

0 noneflag =

0 numinout(

) dfs(pindex, cindex=0)

while

true

:if flag ==1:

# 這裡就是檢視匹配到的字串中的價值是否等於完美排列的價值

if''

.join(b)

==''

.join(d[indexe:indexe+k]):

break

# 如果不是,那麼我們就讓flag為0,然後,繼續深搜。

flag =

0# 如果說,我們要搜的起始長度已經超了的話,就直接跳出迴圈了。

if indexe +

3>

len(c)

: noneflag =

1break

dfs(

0,indexe+3)

else

:print(0

)break

if noneflag ==1:

print(0

)else

:print

(indexe+

1)

這裡我用的是dfs的思路,通過迴圈讓dfs不斷地在不同的地方尋找一條路徑。

python實現計算最少完美平方數

目錄 1 題目描述 2 實現 3 執行結果 給乙個正整數 n,請問最少多少個完全平方數 比如1,4,9 的和等於 n。輸入樣例 12 輸出樣例 3 解釋 4 4 4 輸入樣例 13 輸出樣例 2 解釋 4 9 coding utf 8 author yang roc email aida pc qq...

找完美數python

完美數又稱為完全數或完備數,它的所有的真因子 即除了自身以外的因子 的和 即因子函式 恰好等於它本身,例如6 1 2 3 28 1 2 4 7 14 def perfect lower,upper 找出lower upper之間的所有完美數 完美數是除自身外其他所有因子的和正好等於這個數本身的數 例...

問題九十三 完美數

廢話就不多說了,開始。每日一道理 愛,有的時候不需要山盟海誓的承諾,但她一定需要細緻入微的關懷與問候 愛,有的時候不需要梁祝化蝶的悲壯,但她一定需要心有靈犀的默契與投合 愛,有的時候不需要雄飛雌從的追隨,但她一定需要相濡以沫的支援與理解。文章結束給大家分享下程式設計師的一些笑話語錄 google事件...