3.28
這個題自己的錯誤,廢了很多時間。
如果是單純地相鄰不許同色的話,應該就是這樣的
public static int numways1(int n, int k)
if(k == 1 && n > 2)
int x = (int)math.pow(k-1, n-1);
return x*k+2*(n-1);
}
如果是不允許三根柱子相鄰的話應該是這樣的
public static int numways(int n, int k)
if( n ==1)
if(k == 1 && n > 2)
if( n ==2)
// 我以為用這種遞迴的方法會超時呢
// 其實並沒有呢,哈哈
int x = numways(n-1, k);
int y = numways(n-2, k);
return (x+y)*(k-1);
/***
這種非遞迴的方法應該是會更好一些的
int n2 = k * k;
for (int i = 2; i < n; i++)
return n2;
*/}
514 柵欄染色
從物理學到計算機,再到硬體,再到人工智慧!藍橋杯備賽 lintcode上刷的第三題 我們有乙個柵欄,它有n個柱子,現在要給柱子染色,有k種顏色可以染。必須保證不存在超過2個相鄰的柱子顏色相同,求有多少種染色方案。最開始,我想用動態陣列儲存每一種方案的第i根柱子的顏色。後來發現這樣資料量太大,而且記錄...
LintCode 柵欄染色
lintcode 柵欄染色 lintcode表述有問題,原文是 必須保證任意兩個相鄰的柱子顏色不同 應該表述為 至多有兩根相鄰的柱子具有相同的顏色 此題使用動態規劃,狀態轉移方程為f i f i 1 k 1 f i 2 k 1 顯然f 0 k,f 1 k k 方法一 class solution p...
LintCode 柵欄染色
題目描述 我們有乙個柵欄,它有n個柱子,現在要給柱子染色,有k種顏色可以染。必須保證最多只有兩個相鄰的柱子顏色相同,求有多少種染色方案。樣例 n 3,k 2,return 6 post 1,post 2,post 3 way1 0 0 1 way2 0 1 0 way3 0 1 1 way4 1 0...