动态规划、递推、递归
inlcude_cx
这个作者很懒,什么都没留下…
展开
-
HDU:2041上楼梯问题解题报告
递推公式:a[i]=a[i-1]+a[i-2];不解释!#include__int64 a[58];int main(){ int n,m,i; a[1]=1;a[2]=1;a[3]=2; for(i=4;i a[i]=a[i-1]+a[i-2]; scanf("%d",&n); while(n--) { scanf("%d",&m); printf("%I64d原创 2012-12-05 17:05:56 · 421 阅读 · 0 评论 -
HDU 2859 Phalanx(dp吧~ ~ ~)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2859 觉得应该是DP,代码:#include#include#define MAX 1008charstr[MAX][MAX];intdp[MAX][MAX];intmain(){ int n,i,j,k,max; while(scanf("%d",&n)原创 2012-12-05 17:15:43 · 412 阅读 · 0 评论 -
HDU:2046骨牌铺方格 解题报告
斐波那契数列#includeint main(){ intn,i; __int64a[55]; a[1]=1;a[2]=2; for(i=3;i a[i]=a[i-1]+a[i-2]; while(scanf("%d",&n)!=EOF) printf("%I64d\n",a[n]); return0;}原创 2012-12-05 17:06:02 · 386 阅读 · 0 评论 -
HDU:2044蜜蜂 解题报告
同样是斐波那契序列,水题!#include#include__int64 a[58];int main(){ int n,m,b,i; a[1]=1;a[2]=2; for(i=3;i a[i]=a[i-1]+a[i-2]; scanf("%d",&n); while(n--) { scanf("%d%d",&m,&b); m=b-m; printf("%I原创 2012-12-05 17:06:00 · 361 阅读 · 0 评论 -
HDU:2046骨牌铺方格解题报告
Fibnacci 数列:F(N)=F(N-1)+F(N-2);这个不解释!#includeint main(){ int n,i; __int64 a[55]; a[1]=1;a[2]=2; for(i=3;i a[i]=a[i-1]+a[i-2]; while(scanf("%d",&n)!=EOF) printf("%I64d\n",a[n]); return 0;原创 2012-12-05 17:05:49 · 356 阅读 · 0 评论 -
HDU 动态规划(46道题目)倾情奉献
Robberies OJ地址: http://acm.hdu.edu.cn/showproblem.php?pid=2955 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].mone原创 2012-12-05 17:11:15 · 502 阅读 · 0 评论 -
HDU:不容易系列之(4)——考新郎解题…
错排公式:a[i]=(i-1)*(a[i-1]+a[i-2]);然后乘以从m个中挑出t个的排列组合#include#include__int64 a[25],b[25],num;int main(){ int n,i,m,t; a[2]=1;a[3]=2; b[2]=2;b[3]=6; for(i=4;i { a[i]=(i-1)*(a[i-1]+a[i-2]);原创 2012-12-05 17:06:05 · 536 阅读 · 0 评论 -
HDU:2050解题报告
这个题还是先找规律,当第n个折线加入时,已有f(n-1)个平面,有2(n-1)条折线,第n条折线将与这2(n-1)条折线构成4(n-1)个交点,将使平面多4(n-1)个区域,而第n条折线的顶点将使平面多一个区域故:F(n)=f(n-1)+4(n-1)+1#include #includeint main(){ intm,n,i; __int64 num[10005];原创 2012-12-05 17:05:43 · 458 阅读 · 0 评论 -
HDU:2013解题报告(递推)
这个是简单的递推问题,不解释!(注意会超出int范围)#include #includeint main(){ int q; __int64 num; while(scanf("%d",&q)!=EOF) { q--; num=1; while(q--) num=(num+1)*2; printf("%I64d\n",num); } retu原创 2012-12-05 17:05:40 · 347 阅读 · 0 评论 -
HDU:2018母牛的故事解题报告
递推公式:a[n]=a[n-1]+a[n-3];#include__int64 a[58];int main(){ int n,i; a[1]=1;a[2]=2;a[3]=3; for(i=4;i a[i]=a[i-1]+a[i-3]; while(scanf("%d",&n),n!=0) printf("%I64d\n",a[n]); return 0;}原创 2012-12-05 17:05:53 · 472 阅读 · 0 评论 -
HDU:1465不容易系列之一解题报告
典型的错排问题:1、当N=1和2时,易得解~,假设F(N-1)和F(N-2)已经得到,重点分析下面的情况:2、当有N封信的时候,前面N-1封信可以有N-1或者 N-2封错装3、前者,对于每种错装,可从N-1封信中任意取一封和第N封错装,故=F(N-1)*(N-1)4、后者简单,只能是没装错的那封和第N封交换信封,没装错的那封可以是前面N-1封中的任意一个,故等于 F(N-2) * (N-原创 2012-12-05 17:05:47 · 427 阅读 · 0 评论 -
hdu 1466 计算直线的交点数
Problem Description平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数。比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行)。 Input输入数据包含多个测试实例,每个测试实例占一行,每行包含一个正整数n(nOutput每个测试实例对应一行输出,从小到大列出所有相交方案,其中每个数为可能的交点数,每行的整数之间用一个空格隔开。 Sample原创 2012-12-05 17:11:43 · 326 阅读 · 0 评论 -
HDU:2042不容易系列之二解题报告
递推公式:a[i]=2*(a[i-1]-1);#include__int64 a[58];int main(){ int n,m,i; a[0]=3;a[1]=4; for(i=2;i a[i]=2*(a[i-1]-1); scanf("%d",&n); while(n--) { scanf("%d",&m); printf("%I64d\n",a[m]); }原创 2012-12-05 17:05:58 · 542 阅读 · 0 评论 -
全排列 不重复算法
#includeint a[10],n,count;void sequence(int k){ int i,tmp; if(k==n) { printf("Case %5d:",++count); for(i=0;i<n;i++) printf("%d%c",a[i],i==n-1 ? '\n' : ' '); return; }原创 2012-12-13 18:36:22 · 1051 阅读 · 0 评论