只解释公式原因
2023-09-11 19:31:02
发布于:广东
43阅读
0回复
0点赞
本题解仅供蒟蒻观看(本文所有颜色由123代表)
先上上代码吧
#include<iostream>
using namespace std;
long long a[105],n;
int main(){
cin>>n;
a[1]=0;
a[2]=6;
for(int i=3;i<=n;i++){
a[i]=a[i-1]+a[i-2]*2;//公式
}
cout<<a[n];
}
那么就解释一下公式原因
考虑两种情况
1.第i-1的颜色与第1个的颜色不相同,如123_,那只有2一种填法,根据枚举,可总结出如果第i-1的颜色与第1个的颜色不相同,那第i个数只有一种填法,也就是说每种a[i-1]的填法都能变为一种a[i]的填法。
2.第i-1的颜色与第1个的颜色相同,如121_,那有2,3两种填法,同样根据枚举,可总结出如果.第i-1的颜色与第1个的颜色相同,那第i个数有2种填法,又因为第i-1个数已经被固定,因此共有a[i-2】(前i-2个数的填法)×2(第i个数的填法)
因此,公式为a[i-1]+2×a[i-2]种填法
这里空空如也
有帮助,赞一个