摘要:假設(shè)有幾個(gè)小朋友以相同間隔圍成圓周,要結(jié)對用紙杯電話相互通話。如果繩子交叉,很有可能會纏繞起來,所以結(jié)對的原則是不能讓繩子交叉。如下所示運(yùn)行結(jié)果上一篇異或楊輝三角形下一篇禁止右轉(zhuǎn)本系列總目錄參見程序員的算法趣題詳細(xì)分析和全解
目錄
????????用繩子連接紙杯制作“紙杯電話”——這應(yīng)該勾起了很多人對理科實(shí)驗(yàn)的回憶。如果把繩子拉直,對著一邊的紙杯講話,聲音就可以從另一邊的紙杯傳出。
????????假設(shè)有幾個(gè)小朋友以相同間隔圍成圓周,要結(jié)對用紙杯電話相互通話。如果繩子交叉,很有可能會纏繞起來,所以結(jié)對的原則是不能讓繩子交叉。
????????舉個(gè)例子,如果有 6 個(gè)小朋友,則只要如下圖一樣結(jié)對,
????????就可以順利用紙杯電話通話。也就是說,6 個(gè)人的時(shí)候,有 5 種結(jié)對方式。
????????求:有 16 個(gè)小朋友的時(shí)候,一共有多少種結(jié)對方式?
????????以f(N)表示當(dāng)有N個(gè)小朋友時(shí)的結(jié)對組合方式數(shù)可以推導(dǎo)出以下遞推關(guān)系式:
????????遞推過程以及筆算的結(jié)果如下所示:?
????????基于以上遞推關(guān)系,代碼就顯得微不足道了。如下所示:
# -*- coding: utf-8 -*-"""Created on Wed Sep 8 07:41:50 2021@author: chenxy"""import sysimport timeimport datetimeimport math# import randomfrom typing import List# from queue import Queue# from collections import dequeimport itertools as itdef paringGame(N:int)->int: memo = dict() memo[0] = 1 for n in range(2,N+1,2): nums = 0 for m in range((n//2)): # print(n,m) nums += memo[2*m] * memo[n-2-2*m] memo[n] = nums return memo[N]if __name__ == "__main__": for N in range(16,30,4): tStart = time.time() nums = paringGame(N) tCost = time.time() - tStart print("Pairing combination numbers for {0} = {1}, tCost = {2:6.3f}(sec)".format(N,nums,tCost))
運(yùn)行結(jié)果:
? ? ? ? 上一篇:Q21: 異或楊輝三角形
? ? ? ? 下一篇:Q27: 禁止右轉(zhuǎn)
????????本系列總目錄參見:程序員的算法趣題:詳細(xì)分析和Python全解
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/119659.html
摘要:客戶端發(fā)送包到服務(wù)器,并進(jìn)入狀態(tài),等待服務(wù)器確認(rèn)。再進(jìn)一步接收到客戶端的就進(jìn)入狀態(tài)。通常情況下連接就是連接,因此連接一旦建立通訊雙方開始互發(fā)數(shù)據(jù)進(jìn)行通信,直到其中一方或雙方斷開連接為止。統(tǒng)一資源定位符。 本文旨在用最通俗的語言講述最枯燥的基本知識 面試過前端的老鐵都知道,對于前端,面試官喜歡一開始先問些HTML5新增元素啊特性啊,或者是js閉包啊原型啊,或者是css垂直水平居中怎么實(shí)現(xiàn)...
摘要:客戶端發(fā)送包到服務(wù)器,并進(jìn)入狀態(tài),等待服務(wù)器確認(rèn)。再進(jìn)一步接收到客戶端的就進(jìn)入狀態(tài)。通常情況下連接就是連接,因此連接一旦建立通訊雙方開始互發(fā)數(shù)據(jù)進(jìn)行通信,直到其中一方或雙方斷開連接為止。統(tǒng)一資源定位符。 本文旨在用最通俗的語言講述最枯燥的基本知識 面試過前端的老鐵都知道,對于前端,面試官喜歡一開始先問些HTML5新增元素啊特性啊,或者是js閉包啊原型啊,或者是css垂直水平居中怎么實(shí)現(xiàn)...
摘要:客戶端發(fā)送包到服務(wù)器,并進(jìn)入狀態(tài),等待服務(wù)器確認(rèn)。再進(jìn)一步接收到客戶端的就進(jìn)入狀態(tài)。通常情況下連接就是連接,因此連接一旦建立通訊雙方開始互發(fā)數(shù)據(jù)進(jìn)行通信,直到其中一方或雙方斷開連接為止。統(tǒng)一資源定位符。 本文旨在用最通俗的語言講述最枯燥的基本知識 面試過前端的老鐵都知道,對于前端,面試官喜歡一開始先問些HTML5新增元素啊特性啊,或者是js閉包啊原型啊,或者是css垂直水平居中怎么實(shí)現(xiàn)...
摘要:且聽下回分解基于動(dòng)態(tài)規(guī)劃策略的優(yōu)化解法參見程序員的算法趣題偷懶的算盤上一篇程序員的算法趣題同數(shù)包夾程序員的算法趣題同數(shù)包夾本系列總目錄參見程序員的算法趣題詳細(xì)分析和全解程序員的算法趣題詳細(xì)分析和全解 目錄 1. 問題描述 2. 解題分析 3. 代碼及測試 4. 后記 1. 問題描述 ??...
摘要:能以最少交換次數(shù)到達(dá)升序有序排列記為的數(shù)列記為就等價(jià)于從代表的節(jié)點(diǎn)在這張圖中到達(dá)對應(yīng)的節(jié)點(diǎn)的最短路徑長度。上一篇質(zhì)數(shù)矩陣質(zhì)數(shù)矩陣下一篇唯一的序列本系列總目錄參見程序員的算法趣題詳細(xì)分析和全解程序員的算法趣題詳細(xì)分析和全解 目錄 1. 問題描述 2. 解題分析 3. 代碼及測試 4. 后記 ...
閱讀 3560·2021-09-22 10:52
閱讀 1587·2021-09-09 09:34
閱讀 1990·2021-09-09 09:33
閱讀 757·2019-08-30 15:54
閱讀 2595·2019-08-29 11:15
閱讀 713·2019-08-26 13:37
閱讀 1666·2019-08-26 12:11
閱讀 2974·2019-08-26 12:00