【基础编程】HDOJ2045不容易系列之(3)—— LELE的RPG难题

通过在OJ上不断编程和试错,可以提升编程能力和思维能力。面对超出自身能力的题目,应深入研究相关知识点。此篇聚焦HDOJ2045,通过分析第1、n-1、n个元素的规律,揭示解题关键:当n-1与1颜色相同,n有2种填涂方式;不同则有1种。理解n的范围至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习编程的唯一途径是通过大量的编程,编程,再编程。而在OJ上做题来提高自己的编程能力以及自己的思维能力的方法就是通过自己的思考,分析,编程,试错,再思考,再分析,再试错这样一个不断循环的过程,最后将问题解决,对于那些是在高出自己能力太多的题目就去研究这个题目所涉及的知识点,然后还是要回归到上面的这个过程中。只有通过大量这样的训练,自己的编程能力和思维能力才会得到提升。算法与数据结构是基石,因此只要从事软件开发行业这个能力都是必不可少的。


这题目拿到之后想了很久,因为我觉得虽然一时想不出来也没关系,就将它放在脑袋中慢慢分析就好了,当然有很多时候分析分析就全部乱了,所以还是要拿纸笔来记录一下,画画图才好找到规律。

其实这个题目只要看第1,n-1,n个就能找到规律,当第n-1个与第一个颜色相同时,第n个就有2种填凃方法;如果第n-1个与第一个颜色不相同时,只有一种填凃方法。当然这需要注意一下n的范围。

#include<stdio.h>
long long a[100] = {0};

long long f(int n)
{
    if(n == 1)
    {
       a[n] = 3;
        return 3;
    }
    else if(n == 2)
    {
        a[n] = 6;
        return 6;
    }
    else if(n ==3)
    {
        a[n] = 6;
        return 6;
    }
    else
    {
        if(a[n-1] && a[n-2])
            return a[n-1] + 2*a[n-2];
        else
        {
            a[n] = f(n-1)+2*f(n-2);
            return f(n-1)+2*f(n-2);
        }

    }

}

int main(void)
{
    int n;
    while(scanf("%d",&n) != EOF)
    {
        printf("%lld\n",f(n));

    }


    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值