Codevs 1065 01字符串
2015-09-24 20:33
176 查看
Codevs 1065 01字符串
题目描述 Description
输出仅有0和1组成的长度为n的字符串,并且其中不能含有3个连续的相同子串。输入描述 Input Description
输入文件只有一行一个整数n,表示有0和1组成的字符串的长度。0<=n<=30。输出描述 Output Description
输出文件只有一行一个整数,表示所有满足条件的字符串的个数。样例输入 Sample Input
1样例输出 Sample Output
2分析
设a[i]表示第i个位置的字符f[i]表示第i长度的字符串有多少个
当a[i+1]=a[i] 时 f[i+1]=f[i]
f[i+2]=f[i+1]=f[i]
当a[i+1]<>a[i] 时 f[i+1]=f[i];
f[i+2]=2*f[i+1]=2*f[i];
综合两种情况可以得出
f[i+1]=2*f[i];
f[i+2]=3*f[i]=f[i+1]+f[i];
代码如下
program p1065; var n,i:longint; f:array[0..2] of longint; begin readln(n); f[0]:=2; f[1]:=4; for i:=2 to n-1 do f[i mod 3]:=f[(i-1) mod 3]+f[(i-2) mod 3]; write(f[(n-1) mod 3]); end.
评测结果
测试点#word0.in 结果:AC 内存使用量: 256kB 时间使用量: 1ms测试点#word1.in 结果:AC 内存使用量: 256kB 时间使用量: 1ms
测试点#word2.in 结果:AC 内存使用量: 128kB 时间使用量: 1ms