發現規律:
把每一行的狀態分爲aba和abc兩種,枚舉第二行可發現對於aba型可得到3種aba型和2種abc型,對於abc型可得到2種aba型和2種abc型。
怎麼實現:
定義變量a保存最後一行爲aba型方案數,定義變量b爲最後一行爲abc型方案數,則可進行迭代:
狀態方程:
- a = a * 3 + b * 2
- b = a * 2 + b * 2
代碼
class Solution {
public:
int numOfWays(int n) {
long long a