zoukankan      html  css  js  c++  java
  • dp第一题

    因为对内分工的原因,我的dp一直很弱,最近觉得dp非常有趣,于是开始狂刷dp了。

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    using namespace std;
    int dp[1051][1051];
    int main()
    {
        int n,m;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            memset(dp,0,sizeof(dp));
            for(int i=1;i<=n;i++)
                dp[i][1]=1;
            for(int j=1;j<=m;j++)
                dp[1][j]=1;
            for(int i=2;i<=n;i++)
                for(int j=2;j<=m;j++)
                {
                    if(i==n && j==m)
                    {
                        dp[i][j]=(dp[i-1][j]+dp[i][j-1])%10007;
                        break;
                    }
                    else
                    {
                        dp[i][j]=(dp[i-1][j]+dp[i][j-1])%10007;
                    }
                }
            cout << dp[n][m]%10007 <<endl;
        }
        return 0;
    }

    已知一个帅哥(zlgg)要从学校走回家,地图是N*M的网格状,他的学校在左上角,家在右下角,但他只能向右或向下走,问:他有多少种不同的走法回家?

    状态:dp[i][j]代表走到网格i*j时有多少种不同走法;

    状态转移方程:dp[i][j]=dp[i-1][j]+dp[i][j-1];

  • 相关阅读:
    深入了解css的行高Line Height属性
    Kafka消息队列
    架构图
    清理肠道好方法
    维特根斯坦
    ES查询DSL大于小于写法
    python虚拟环境
    Dockerfile
    flask基本使用
    泛型类多个类型参数的定义
  • 原文地址:https://www.cnblogs.com/markliu/p/2496714.html
Copyright © 2011-2022 走看看