1. 程式人生 > >《程式設計師的演算法趣題》-(日)增井敏克 Python解題 -- (Q17)

《程式設計師的演算法趣題》-(日)增井敏克 Python解題 -- (Q17)

《程式設計師的演算法趣題》-(日)增井敏克 , 書中為69 道數學謎題編寫了解題程式, 程式語言為:Ruby,JavaScript,C語言。有興趣的同學,可以購書閱讀~

在此更新個人編寫的Python版,僅供學習使用。(執行環境:Python3.6)

Q17 挑戰 30 人 31 足
    有個電視節目,全國各地的小學生在這個節目裡參加“30人31足”競賽。下面探討一下什麼樣的排列順序在“30人31足”比賽裡比較有利。多個女生連續排列,體力上會處於劣勢,所以原則是儘量不讓女生相鄰(男生可以連續排列)。

問題
    求 30 個人排成一排時,一共有多少種有利的排列方式?假設這裡只考慮男女的排列情況,不考慮具體某個人的位置。舉個例子,4 個人(4人 5 足)的情況下如圖所示,共有8 種排列方式。

                                              

total_number = 30

last_boy_pattern = 1
last_girl_pattern = 1
for number in range(1, total_number):
    new_girl_pattern = last_boy_pattern
    last_boy_pattern = last_boy_pattern + last_girl_pattern
    last_girl_pattern = new_girl_pattern

print("有%s種有利的排列方式" % (last_girl_pattern+last_boy_pattern))

 執行結果:

                 有2178309種有利的排列方式