题目描述
在网络上传输由a,b,c三种字母组成的长为n的字符串,若字符串中有两个a连续出现,则网络上不能传输,问有多少种不同的传输方式?如:aba是合法的长度为3的字符串,而baa则是非法的长度为3的字符串。
输入输出格式
输入格式
一行,一个整数n。(1≤n≤10)
输出格式
一行,一个整数,表示不同的传输方式的数量。
输入输出样例
输入样例
2
输出样例
8
题解
用$a[i]$表示长度为$i$的方案数,用$cnt$表示$a[i]$中末尾为a的方案数。
则可得$a[i]=a[i-1]*3-cnt$,$cnt=a[i-1]-cnt$。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include <iostream> using namespace std; int n; int a[11] = {0, 3}; int main() { cin >> n; int cnt = 1; for(register int i = 2; i <= n; ++i) { a[i] = a[i - 1] * 3 - cnt; cnt = a[i - 1] - cnt; } cout << a[n]; return 0; }