博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2501
阅读量:7055 次
发布时间:2019-06-28

本文共 491 字,大约阅读时间需要 1 分钟。

hot3.png

递推分析:#include <iostream>

using namespace std;
int main()
{
    int t,n,a[31];
    a[0]=0;
    a[1]=1;
    a[2]=3;
    for(int i=3; i<31; i++)
        a[i]=a[i-1]+2*a[i-2];
    cin>>t;
    while(t--)
    {
        cin>>n;
        cout<<a[n]<<endl;
    }
    return 0;
}
/*
假设2*n个空间,已知a[n-1]和a[n-2]。
(1)、先把2*(n-1)放在空间的上方,那么剩余的2*1的空间只能放一个横放的2*1,这里有a[n-1]种
(2)、先把2*(n-2)放在空间的上方,那么剩余的2*2的空间可以放两个横放的2*1,两个竖放的2*1,一个2*2,共3种,但是,注意的是,两个横放的2*1这种情况与(1)的重复,so,只有两种情况符合,这里有2*a[n-2]种
       so,a[n]=a[n-1]+2*a[n-2]
纯属个人理解,有问题可以提出

 

转载于:https://my.oschina.net/hlslml77/blog/180498

你可能感兴趣的文章
转载:分析apk工具aapt的使用,解析其原理
查看>>
如何向视图插入数据
查看>>
注册和策略模式
查看>>
python 列表
查看>>
第七课作业
查看>>
MEAN实践——LAMP的新时代替代方案(下)
查看>>
CentOS7 下安装 Oracle 12c
查看>>
简单介绍AngularJs Filters
查看>>
Python中的dict
查看>>
Beautiful Soup4库文档学习
查看>>
理解cookie和session
查看>>
我的友情链接
查看>>
linux 5,6,9,12单元练习
查看>>
kill命令
查看>>
错题集06
查看>>
磁盘配额限制
查看>>
shell的bash特性
查看>>
HTML中的超链接
查看>>
什么是进程与线程
查看>>
nodeJS之URL
查看>>