hdu-2045 簡單遞推 水
阿新 • • 發佈:2018-09-23
方塊 span col 方案 ace std name hdu return
題意:
一行長度為n的方格,只能使用三種顏色R、P、G來填充,且滿足相鄰方塊不能同色,首尾方塊不能同色。給出n,輸出滿足條件的著色方案數。
思路:
簡單遞推,由n-1個方塊推導出n個方塊的情況,有以下兩種情況:
1.第n-1個方塊與第1個方塊不同色,滿足條件。直接在n-1的滿足基礎上添加第n個,且第
n個只有一種選擇。即F[n-1];
2.第n-1個方塊與第1個方塊同色,不滿足F[n-1],退至F[n-2],此時添加第n個方塊時有兩種選擇。即F[n-2]*2。
遞推公式:F[n] = F[n-1] + 2 * F[n-2]
代碼:
1 #include<iostream> 2using namespace std; 3 int main() 4 { 5 int n; 6 long long f[55]; 7 f[1] = 3; 8 f[2] = 6; 9 f[3] = 6; //註意f[3]不能用遞推公式得出 10 for(int i = 4; i < 51; i++) 11 { 12 f[i] = f[i - 1] + 2 * f[i - 2]; 13 } 14 while(cin >> n) 15 { 16cout << f[n] << endl; 17 } 18 return 0; 19 }
hdu-2045 簡單遞推 水