hdu 超级楼梯 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2041

哦~~对了,这些题读者可以直接忽略,我只是想练习一下自己薄弱的地方......

题目意思我就不说了...自从昨晚问完乌冬兄一条DP题之后,“一体就知道系DP啦,而且仲好简单噶DP...”。就深感自己是如此地弱......可能有一段相当漫长的时间不会再找他了,毕竟一个喳喳对着一个区域赛银牌的人,自尊心作祟,而且,很大压力!我发现我好多不会......他好像以为我什么都会......

这条题以前做过,用递推做的,因为昨天那题说用到记忆化搜索,现在就用记忆化搜索做。调了一下,加深了递归的理解。我觉得,递归对我来说,就是一只拦路虎,只能通过多做来努力去攻克了,fighting!!!

这个是我通过调试并在纸上模拟过程做的。代表到达第6级楼梯时有多少种走法。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cstring>
 5 using namespace std;
 6
 7 const int maxn = 40 + 10;
 8 int a[maxn];
 9
10 int f(int n)
11 {
12     if (n == 1 || n == 2)
13         return a[n] = 1;
14     if (a[n] != -1)   // 这里用到记忆化搜索
15         return a[n];
16     return a[n] = f(n-1) + f(n-2);
17 }
18
19 int main()
20 {
21     int n, m;
22     memset(a, -1, sizeof(a));
23     while (scanf("%d", &n) != EOF)
24     {
25         while (n--)
26         {
27             scanf("%d", &m);
28             printf("%d\n", f(m));
29         }
30     }
31     return 0;
32 }

hdu 超级楼梯 解题报告

时间: 2024-11-08 13:17:24

hdu 超级楼梯 解题报告的相关文章

hdu 1541 Stars 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1541 题目意思:有 N 颗星星,每颗星星都有各自的等级.给出每颗星星的坐标(x, y),它的等级由所有比它低层(或者同层)的或者在它左手边的星星数决定.计算出每个等级(0 ~ n-1)的星星各有多少颗. 我只能说,题目换了一下就不会变通了,泪~~~~ 星星的分布是不是很像树状数组呢~~~没错,就是树状数组题来滴! 按照题目输入,当前星星与后面的星星没有关系.所以只要把 x 之前的横坐标加起来就可以了

Valentine&#39;s Day Round 1001.Ferries Wheel(hdu 5174)解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5174 题目意思:给出 n 个人坐的缆车值,假设有 k 个缆车,缆车值 A[i] 需要满足:A[i−1]<A[i]<A[i+1](1<i<K).现在要求的是,有多少人满足,(他坐的缆车的值 + 他左边缆车的值) % INT_MAX == 他右边缆车的值. 首先好感谢出题者的样例三,否则真的会坑下不少人.即同一部缆车可以坐多个人.由于缆车的值是唯一的,所以可以通过排序先排出缆车的位置.求出

hdu 1963 Investment 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1963 题目意思:有 本金 money,还有一些股票的种类,第 i 种股票买入需要 value[i] 这么多钱,相应会有一定的利息interest[i],问经过若干年 year 后,每年都以最优的方案投资,总的资金有多少? 完全背包题,不过要看清楚 这句话:The value of a bond is always a multiple of $1 000,否则TLE了 1 #include <ios

BestCoder25 1001.Harry and Magical Computer(hdu 5154) 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5154 题目意思:有 n 门 processes(编号依次为1,2,...,n),然后给出 m 种关系: a,b.表示 process b 要在 process a 之前完成.问经过 m 种关系之后,有没有可能完成所有的 process. 可以利用拓扑排序的思想做.遍历所有 process,处理所有入度为 0 的点,然后把与该点关联的点,即度数都减一.这样处理完之后,每个点的度数应该都是-1,否则就代

Bestcoder13 1003.Find Sequence(hdu 5064) 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5064 题目意思:给出n个数:a1, a2, ..., an,然后需要从中找出一个最长的序列 b1, b2, ...,  bt.需要满足两个条件(1)b1≤b2≤…≤bt   (2)b2−b1≤b3−b2≤?≤bt−bt−1.求出最大的 t 为多少. 遗留大半年的题目呀呀呀呀~~~~!!!首先非常感谢乌冬子大半年前的指点迷津,呕心沥血想了大半天举出个反例,以便指出我算法的错误.为了纪念这个伟大的人物(

hdu 1896.Stones 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1896 题目意思:给出 n 块石头的初始位置和能到达的距离.对于第奇数次遇到的石头才抛掷,偶数次的就忽略.问最多能扔到多远.如果有多颗石头在一个位置,距离小的那个标记为先遇到的. 所以先解说一下第二个测试案例: 2 1  5 6  6 在6这个位置的时候,由于5比6小,所以规定1(5)这个点是先遇上的,是偶数次遇到,所以忽略. 用优先队列做,位置近的优先级越高,如果位置相同,距离短的优先级越高. 1

BestCoder27 1001.Jump and Jump... (hdu 5162) 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5162 题目意思:有 n 个 kid,每个 kid 有三个成绩 a, b, c.选最大的一个成绩作为这个 kid 的最终成绩.然后根据每个 kid 的最终成绩,对他们进行排名. 赛中写得比较丑陋,这个还比较顺眼....呵呵 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <

BestCoder14 1002.Harry And Dig Machine(hdu 5067) 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5067 题目意思:给出一个 n * m 的方格,每一个小方格(大小为1*1)的值要么为 0 要么为一个正整数.规定是正整数的值得方格个数不超过 10 个.现在问从最左上角的点开始,要经过所有正整数的值的点之后,要返回到最左上角的点的最短路径是多少. 其实为正整数的那些点具体值是什么根本无关紧要.可以先求出所有点到其他点的两两最短路径,然后利用状态压缩 (考虑到只有10个点,状态数最多为2^10)来求出

HDU - 超级楼梯

http://acm.hdu.edu.cn/showproblem.php?pid=2041 #include <stdio.h> #include <cstring> #include <algorithm> #include <vector> #include <map> #include <assert.h> #include <set> #include <cmath> #include <que