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

来源:互联网 发布:有线监控怎么连接网络 编辑:程序博客网 时间:2024/05/17 09:41

学习编程的唯一途径是通过大量的编程,编程,再编程。而在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;}


0 0
原创粉丝点击