91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【Python】算法之求組合

發布時間:2020-08-14 00:56:36 來源:ITPUB博客 閱讀:221 作者:風塵_NULL 欄目:編程語言

原題:

假設有a,b,c,1,2五個字符,請用任意一門語言求出這五個數的所有組合

思考:

1)這題字符有點多,我來變換一下,a、b、c三個字符,請用任意一門語言求這三個字符的組合(數學歸納法不是從最少識別規律開始么?)

2)嗯,三個字符,肯定是三重循環,最關鍵的是最內存循環記住外層循環是什么,那么自然而然寫成如下:

#!/usr/bin/python
tmp_str=''
a=['a','b','c']
for t_level0 in  range(0,len(a)) :
    for t_level1 in range(0,len(a)):
        for t_level2 in range(0,len(a)):
            tmp_str=a[t_level0] + a[t_level1] + a[t_level2]
            print(tmp_str)

運行一下,完美(三位組合,27種),如圖: 【Python】算法之求組合

3)嗯?如果是五個字符排列,或者N個字符的組合呢?我難道要要在我的代碼里寫5個循環,或者是N個循環嗎?看來重要的是我要根據字符數來控制循環的層數,那么怎么控制呢,當然要用函數(函數中寫一個循環,接受N作為循環的控制,如果N遞減沒到1,繼續調用函數),咦?這不是遞歸嗎?哈哈,還真是,于是代碼寫成了下面這樣:

#!/usr/bin/python
#-*- coding=UTF-8 -*-
#tmp_str=''
a=['a','b','c']
'''
#用位置記錄外層循環的值
for t_level0 in  range(0,len(a)) :
    for t_level1 in range(0,len(a)):
        for t_level2 in range(0,len(a)):
            tmp_str=a[t_level0] + a[t_level1] + a[t_level2]
            print(tmp_str)
'''
#prev_str 記錄外層循環的值
def compose(c_list,level,prev_str) :
    if level == 1:
        for value in c_list :
            tmp_str=prev_str + value
            print(tmp_str)
    else :
        level -= 1
        for value in c_list:
            tmp_str=prev_str+value
            compose(c_list,level,tmp_str)
compose(a,len(a),'')

執行結果,嗯,這才完美:

【Python】算法之求組合

總結:

寫代碼,從簡到繁,利用歸納法思維,往往能更快找到解決方法

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

油尖旺区| 永修县| 台南县| 灌南县| 嘉善县| 台安县| 乌兰浩特市| 香格里拉县| 石渠县| 芜湖市| 清远市| 克拉玛依市| 平舆县| 盐边县| 广南县| 博湖县| 客服| 平遥县| 喀喇沁旗| 滨海县| 喀喇| 镇巴县| 岳阳市| 黎川县| 大渡口区| 慈利县| 正镶白旗| 浮山县| 都匀市| 黄石市| 夏河县| 新密市| 秦皇岛市| 大竹县| 万荣县| 涟源市| 广宗县| 乐业县| 建水县| 视频| 调兵山市|