zoukankan      html  css  js  c++  java
  • HDU 1267 下沙的沙子有几粒?

    一道很简答的题目,但是看不出来是DP啊。渣爆了。

    意思是从左到右H的数量要比D多,也就是当出现H<D的个数不是一个字符串。

    所以(m,n分别是H,D的个数)

    1.m<n时,H一定比D小,构不成条件,此时为0

    2.每个m>n的字符串都可以由m-1,n和m,n-1的字符串得到。

    3.只写出了转移方程,没有写出m<n的状态限制,不算是自己做出来的,看来不是很理解题意···

     1 #include <stdio.h>
     2 
     3 __int64 dp[21][21];
     4 int n , m;
     5 
     6 void dfs()
     7 {
     8     for(int i=0;i<=20;i++) dp[0][i]=0;
     9     for(int i=0;i<=20;i++) dp[i][0]=1;
    10     dp[0][0]=0;
    11     for(int i=1;i<=20;i++)
    12     {
    13         for(int j=1;j<=20;j++)
    14         {
    15             dp[i][j] = i< j ? 0 : dp[i-1][j]+dp[i][j-1];
    16         }
    17     }
    18     
    19 }
    20 
    21 int main()
    22 {
    23     dfs();
    24     while(~scanf("%d%d",&m,&n))
    25     {
    26         printf("%I64d
    ",dp[m][n]);
    27     }
    28     return 0;
    29 }
    View Code
  • 相关阅读:
    JSON 操作
    生成下面的模块时,启用了优化或没有调试信息
    Emacs
    Integration rules
    Testing tools
    软件架构(读书笔记1)
    依赖于自己做计算
    POJO
    软件架构(读书笔记2)
    设计得不好
  • 原文地址:https://www.cnblogs.com/cton/p/3437805.html
Copyright © 2011-2022 走看看