HDU 下沙的沙子有几粒

简介:

题目网址:    http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=2&sectionid=3&problemid=9

分析,这题其实是H和D的组合排列问题,只不过要考虑期间累计的H和D的数量关系。

用DP来做,可以推导出:

dp[i][j] = dp[i-1][j] + dp[i][j-1]

dp[][]前一个表示H的数量,后一个表示D的数量。

分上面那种情况是因为最后一个必然是H或者D,而此时可以考虑把新加的一个放在最后,因为假如加的是H,如果加在[i-1][j]中加入H,则最后一个依然是H或D,此时如果成立,那么依然属于[i-1][j]或[i][j-1]的情况。

所以推导出此递推关系。

#include <iostream>

using namespace
 std;

int
 main()
{

    __int64
 d[21][21];
    d[1][1] = 1;
    d[2][1] = 2;
    d[1][2] = 0;
    for
(int i = 1; i<21;i++)
        d[i][1] = i;
    for
(int i = 2;i<21;i++)
    for
(int j = 2;j<21;j++)
    {

        if
(i>=j)
        d[i][j] = d[i-1][j] + d[i][j-1];
        else
 d[i][j] = 0;
    }

    int
 m,n;
    while
(cin>>m>>n)
    cout<<d[m][n]<<endl;
    return
 0;
}










本文转自NewPanderKing51CTO博客,原文链接:http://www.cnblogs.com/newpanderking/archive/2011/07/31/2122540.html ,如需转载请自行联系原作者



相关文章
|
8月前
|
机器学习/深度学习 存储 人工智能
HDU - 5912——Fraction
HDU - 5912——Fraction
|
Java
hdu 2503 a/b + c/d
hdu 2503 a/b + c/d
52 0
|
人工智能 Java
hdu 1712 ACboy needs your help
ACboy这学期有N门课程,他计划花最多M天去学习去学习这些课程,ACboy再第i天学习第j门课程的收益是不同的,求ACboy能获得的最大收益。
147 0
|
Java 人工智能
|
机器学习/深度学习 算法
hdu 1856 More is better
点击hdu 1856思路: 思路: 离散化+并查集 分析: 1 点数最多为10^7,但是边数最多10^5,所以我们必须采用离散化,然后利用带权并查集的思想,rank[x]表示的是以x为根节点的集合的元素个数 2 这一题主要注意的就是当...
830 0

热门文章

最新文章