您的位置:首页 > 其它

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

。。。

原来图片挂了,好纠结=-=



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pascal 动态规划