HDU2047 阿牛的EOF牛肉串

这题题意理解并不难,尽管想到是递推,但是还是好久才找到递推公式的。

从n-1分析到n似乎走不同,但是我们可以反过来,

先看第n位,由于O是个特殊的字母,所以我们以第n位是不是O来分类:

1、第n位是O:那么前一位只能是E,F,所以是在n-2所有合法字符串的种树乘2

2、第n位不是O:那么很简单,就是在n-1合法字符串上加上E或者F,所以是n-1长度字符串种树的两倍

综上所述,f[n] = 2 * (f[n-1]+f[n-2])

似乎这题还是Fabonacci数列的变种。

#include <stdio.h>

long long res[40];

long long solve(int n) {
    if (res[n]) return res[n];
    if (n == 1) return res[1] = 3;
    if (n == 2) return res[2] = 8;
    if (n > 2) return res[n] = solve(n - 2) * 2 + solve(n - 1) * 2;
}

int
main(int argc, char **argv) {
    int n;
    while (scanf("%d", &n) == 1) {
        printf("%lld\n", solve(n));
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值