N個扇形M種顏色

2022-09-13 22:12:24 字數 1180 閱讀 4087

題:

將乙個圓形等分成n個小扇形,將這些扇形標記為1,2,3,...,n,現在使用m種顏色對其塗色,要求相鄰兩個扇形顏色不相同。求:有多少種塗色方法?

備註:1. 不考慮數值越界情況;

2. n >= 1, m >= 3;

3. 乙個例子; 如果n=3, m=3時,一共有6種塗法

兩種方法:

①數學公式法

我所搜到的基本都是這種方法

②遞迴自己寫的

分為三步:

1. 明確邊界

n個扇形,即長度為n的陣列,當為第乙個時,任意塗色,當為第n個時,停下,判斷

2. 判斷條件

當為第乙個時,不需要判斷

當為2...n-1個時,與前乙個不一樣

當為第n個時,與前乙個不一樣 and 與第乙個不一樣

1

defcal(n, m):

2 res ={}

3 res[n] =0

4def

calsub(n, m, j):

5if j == n-1:

6for i in

range(m):

7if i != list_n[j-1] and i !=list_n[0]:

8 res[n] += 1

9return

10else

:11 t =j #因為深度優先,所以j到後面會發生變化,因此用中間變數t儲存當前扇形index

12for i in

range(m):

13if i != list_n[t-1]:

14 list_n[t] =i

15 j =t

16 j += 1

17calsub(n,m,j)

1819

if n == 1:

20return

m21 list_n =list(range(n))

22for i in

range(m):

23 list_n[0] =i

24 calsub(n, m, 1)

25return res[n]

m個珠子共n種顏色,找出包含n種顏色的最短連續片段

原題目 題目分析 一 暴力搜尋 1 最簡單的方法 暴力搜尋,逐個掃瞄第i個位置開始包含n中顏色最短區間,時間複雜度為o m 2 2 從i開始掃瞄,每出現一種新的顏色,計數 1 當計數 n時候,結束,此時即為i開始的最短區間 二 1 掃瞄一遍陣列m,計算出每種顏色在陣列m中下一次出現的位置,存在資料n...

染色問題(n個格仔,3種顏色)

有排成一行的 個方格,用紅 red 粉 pink 綠 green 三色塗每個格仔,每格塗一色,要求任何相鄰的方格不能同色,且首尾兩格也不同色 求全部的滿足要求的塗法.遞推公式 a1 3 a2 6 a 3,2 6 a3 6 a 3,3 6 an 2 a n 2 a n 1 n 4 證明 考慮第n 1個...

染色問題 n個格仔,3種顏色

有排成一行的 個方格,用紅 red 粉 pink 綠 green 三色塗每個格仔,每格塗一色,要求任何相鄰的方格不能同色,且首尾兩格也不同色 求全部的滿足要求的塗法.遞推公式 a1 3 a2 6 a 3,2 6 a3 6 a 3,3 6 an 2 a n 2 a n 1 n 4 證明 考慮第n 1個...