hdu2041】的更多相关文章

超级楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 23631    Accepted Submission(s): 12143 Problem Description有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2041 超级楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 86599    Accepted Submission(s): 44398 Problem Description 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级…
题目 这道题以前也看到过,但是没有写出来,我刚开始以为用循环遍历一边就可以了,结果我错了,没想到是用的斐波拉契推出来的,用的是递推的思想. 站在楼梯的第n级想一下,前一步是从哪里来的,问题就清楚了. 由于每次只能上一级或两级,那么f(n)=f(n-2)+f(n-1).这不就是一个菲波拉契数列吗?就是一个递推问题? 开始时候是站在第1级台阶上,所以数列的开始几项会有所不同. f(1)=0,因为开始就站在第1级台阶上: f(2)=1,只能从第1级台阶上1级: f(3)=2,只能从第1级台阶上2级,或…
超级楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 57989    Accepted Submission(s): 29451 Problem Description 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是N行…
#include<stdio.h> int main() { int i,t,n; ]; dp[]=; dp[]=; dp[]=; ;i<=;i++) dp[i]=dp[i-]+dp[i-]; scanf("%d",&t); while(t--) { scanf("%d",&n); printf("%d\n",dp[n]); } }…
fn[i]表示走上第i级台阶的所有走法. 方程:fn[i]=fn[i-1]+fn[i-2]; 1 #include<cstdio> 2 #define MAXN 40 3 using namespace std; 4 typedef unsigned long long LL; 5 LL fn[MAXN+1]; 6 7 void solve(){ 8 fn[1]=0; 9 fn[2]=1; 10 fn[3]=2; 11 for(int i=4;i<=MAXN;i++) 12 fn[i]=…
对于dp,我目前的理解就是,干成题目中的那件事需要作出若干次决策,然后你要取其中最优的结果,我们可以用深搜来递归地找最优解,然后我们来观察一下这个递归树的形状,如果它能从底往上直接递推的话,就不用递归了,直接递推迭代到结果.. 当你不知道哪个决策最优时,我的解决方法是,那我们就遍历所有决策,从中选择最优的,当你用深搜遍历所有决策时,题目中的条件或者你自己推的结论可以帮助你进行dfs剪枝  还有一种方法是,假设你能找到贪心的决策,每次就能贪心地选择某决策  并且,能DP的前提条件是顺序正确,你递推…
URL:https://vjudge.net/problem/HDU-2041 简单DP,因为每次只能走1或者2阶,所以当走到第i阶的时候(i>=4),那么它的前一种状态只可能是i-1和i-2,所以状态方程为: DP[2] = 1; DP[3] = 2; DP[i] = DP[i-1] + DP[i-2];(i>3) AC code : #include <iostream> #include <algorithm> #include <bits/stdc++.h…
就不写题解了.很基础的递推. HDU2084数塔 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 代码: #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> using namespace std; ; int dp[maxn][maxn]; int a[maxn][maxn]; int main()…
HDU2040 亲和数 题目链接 Problem Description 古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284. 而284的所有真约数为1.2.4.71. 142,加起来恰好为220.人们对这样的数感到很惊奇,并称之为亲和数.一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数. 你的任务就编写一个程序,判断给定的两个数是否是亲和数 Input 输入数…