計蒜客 第二十二題 計數(shù)和數(shù)數(shù)

“伯爵說”序列如下:1,11,21,1211,111221, …。其1讀作one 1或者11。11讀作two 1s或者21。21讀作one 2, one 1或者1211。

輸入格式

多組輸入,讀到文件結(jié)束。每組輸入給定一個整數(shù) n(1≤n≤30)。

輸出格式

輸出第 n 個序列。注意,整數(shù)序列以字符串的形式表示。

樣例輸入

6
樣例輸出

312211

花了很長時間做出來,思路一直不對,在網(wǎng)上也沒找的很好的解法。思路在下面

try: 
    while True:
        x = int(input())
        A = [1]
        b = 0
        B = []
        C = []
        if x > 1:
            for j in range(x-1):
                for i in A:
                    try:
                        if B[b] == i:
                            C[b] = C[b] + 1
                        else:
                            b = b + 1
                            B.append(i)
                            C.append(1)
                    except SyntaxError:
                        pass
                    except IndexError:
                        B.append(i)
                        C.append(1)
                A = []
                b = 0
                for g, h in zip(C, B):
                    A.append(str(g))
                    A.append(str(h))
                B = []
                C = []
            print("".join(A))
            A = [1]
            b = 0
            B = []
            C = []
        else:
            print('1')
            A = [1]
            b = 0
            B = []
            C = []        
except EOFError:
    pass

做出來后又花了一會時間試著用函數(shù)了寫出來。

def Ji_Shu(up_list):  # 計數(shù)函數(shù),元素存入val__A,次數(shù)存入count_A。
    new_val = 0
    val__A = []
    count_A = []
    for i in up_list:
        try:     # 嘗試判斷新取出的元素是不是和之前的一樣,出錯就會跳到第二個except。
            if val__A[new_val] == i:  #count_A計相同元素個數(shù)
                count_A[new_val] = count_A[new_val] + 1
            else:    #把新元素添加到val__A,并count_A也添加 1
                new_val = new_val + 1
                val__A.append(i)
                count_A.append(1)
        except SyntaxError:  # 暫時沒找到能去掉報錯這一步的辦法
            pass
        except IndexError:     #把新元素添加到val__A,并count_A也添加 1
            val__A.append(i)
            count_A.append(1)
    return val__A, count_A

def Shu_Shu(val__A, count_A):  # 數(shù)數(shù)函數(shù),結(jié)果存入up_list
    up_list = []
    for a, b in zip(count_A, val__A):
        up_list.append(str(a))
        up_list.append(str(b))
    return up_list


def main(): 
    try:  # 判斷是否空字符
        while True:
            x = int(input())
            up_list = [1]
            if x == 1:
                print('1')
            else:
                for j in range(x-1):
                    val__A, count_A = Ji_Shu(up_list)
                    up_list = Shu_Shu(val__A, count_A)
                print("".join(up_list))
    except EOFError:
        pass

if __name__ == '__main__':
    main()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 從幾天前我就開始糾結(jié)今天推什么,機緣巧合之下看到了國慶檔的《湄公河行動》,今天就來簡單的聊聊這部片子吧。 接下來會...
    路邊書店閱讀 395評論 0 0
  • 上午我騎車回家,準備輔導侄兒和侄女學習,沒想到他們?nèi)サ乩镛劬栈ㄈチ?。我把他們喊回來后就讓他們?nèi)ケ蔽輰懽鳂I(yè)了,我和媽...
    靜心專注閱讀 250評論 0 0
  • 在南街,人們都叫我奶奶四娘,稱呼我爺爺為四大爺。爺爺?shù)钠夂茌S,奶奶則很豁達,誰家有大事小情都肯幫忙,整...
    簡一葉閱讀 694評論 5 12
  • 世界上的每一件事都不是能掌控的,至少大部分不能。就像以前美國拍了世界上第一張地球的圖片,現(xiàn)在中國也行了,這樣的...
    憂哩昂閱讀 276評論 0 0

友情鏈接更多精彩內(nèi)容