項鍊顏色分配問題

2022-08-11 07:48:09 字數 1072 閱讀 8842

[問題]m個交易員在圓桌旁圍坐一圈,將n(n < m)個交易品種分配給他們研究。每人分配乙個,要求相鄰的兩個人所分配到的交易品種不相同。程式設計計算共有多少種分配方式

[解析]將圓桌抽象成乙個圓,將交易員抽象成圓上的乙個個小球(類似於項鍊),將分配m個交易品種抽象成分配m種顏色。從任意乙個球開始,將其編號為1。對於1號球,有m種顏色分配方案。設n個球中的第1個球的顏色設定後,還有f(n)種顏色分配方案,則顏色分配方案的總數為m * f(n).

下面來求f(n)。從1號球開始選定3個球,分別編號為1、2、3.下面分兩種情況討論:

(1)如果3號球與1號球顏色相同,則1、2、3這3個球共有m-1種顏色分配方案。此時對於剩下的球,可以將1、2兩球去掉,只保留3號球。這樣就有f(n-2)顏色分配方案。所以第一種情況下顏色分配方案的總數為(m-1) * f(n-2)

(2)如果3號球與1號球顏色不同,則1、2、3這3個球共有(m-1) * (m-2)種顏色分配方案。此時對於剩下的球,可以將2號球去掉,只保留1、3兩球。設n個球中的前兩個球的顏色設定後,還有f(n)種顏色分配方案,這樣就有f(n-1)顏色分配方案。所以第二種情況下顏色分配方案的總數為(m-1) * (m-2) * f(n-1)

下面來求f(n)。將最開始的3個球編號為1、2、3,仍然分兩種情況來討論。

a.如果3號球與1號球顏色相同,則1、2、3這3個球共有1種顏色分配方案。此時對於剩下的球,可以將1、2兩球去掉,只保留3號球。這樣就有f(n-2)顏色分配方案。所以第一種情況下顏色分配方案的總數為 f(n-2)

b.如果3號球與1號球顏色不同,則1、2、3這3個球共有(m-2)種顏色分配方案。此時對於剩下的球,可以將2號球去掉,只保留1、3兩球。這樣就有f(n-1)顏色分配方案。所以第二種情況下顏色分配方案的總數為(m-2) *  f(n-1)

綜上所述,遞推式如下:

f(n) = (m-1) * f(n-2) + (m-1) * (m-2)* f(n-1) 

f(n) = f(n-2) +  (m-2)* f(n-1) 

得出遞推式之後,即可用遞迴或者動態規劃來程式設計實現。遞迴截止條件為:

f(1) = 1

f(2) = m - 1

f(2) = 1

問題 1170 能量項鍊 Wrong

時間限制 1sec 記憶體限制 128mb 在mars星球上,每個mars人都隨身佩帶著一串能量項鍊。在項鍊上有n顆能量珠。能量珠是一顆有頭標記與尾標記的珠子,這些標記對應著某個正整數。並且,對於相鄰的兩顆珠子,前一顆珠子的尾標記一定等於後一顆珠子的頭標記。因為只有這樣,通過吸盤 吸盤是mars人吸...

C C 顏色問題

在開頭寫上 include 在函式中寫入 system color 3h 即可改變在vc中執行是背景和前景的顏色。設定預設的控制台前景和背景顏色。color attr attr 指定控制台輸出的顏色屬性。顏色屬性由兩個十六進製制數字指定 第乙個為前景,第二個為前景。每一數字可以為以下任何值之一 0 ...

IOS顏色問題

花了點時間,終於搞明白了。1.利用uicolor展現 f6f6f6 這個傳統的顏色 f6f6f6 為乙個 16 進製表示的rpg顏色,所以,需要先轉換成 10進製,其中 f6 240,f6 240 f6 240 之後,一行 即可 uicolor testcolor1 uicolor colorwit...