zoukankan      html  css  js  c++  java
  • hdu 1978 How many ways

    状态转移方程:dp[i+k][j+l] = (dp[i+k][j+l] + dp[i][j]) % 10000;

    dp[i][j]表示到达点(i,j)的途径数, 其中k,l为处在点(i,j)时,能够到达点(i+k,j+l)。

    #include <iostream>
    #include <algorithm>
    #include <cmath>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <string>
    #include <vector>
    #include <set>
    #include <queue>
    #include <stack>
    #include <climits>//形如INT_MAX一类的
    #define MAX 105
    #define INF 0x7FFFFFFF
    # define eps 1e-5
    using namespace std;
    
    int dp[MAX][MAX],map[MAX][MAX];
    int n,m;
    
    void solve()
    {
        dp[0][0] = 1;
        int i,j,k,l;
        for(i=0; i<n; i++)
            for(j=0; j<m; j++)
            {
                int t = map[i][j];
                for(k=0; k<=t; k++)
                {
                    if(i+k >= n)
                        break;
                    for(l=0; l+k<=t; l++)
                    {
                        if(l+j >= m)
                            break;
                        if(k == 0 && l == 0)
                            continue;
                        dp[i+k][j+l] = (dp[i+k][j+l] + dp[i][j]) % 10000;
                    }
                }
            }
    }
    
    int main()
    {
        int t,i,j;
        cin >> t;
        while(t--)
        {
            memset(dp,0,sizeof(dp));
            cin >> n >> m;
            for(i=0; i<n; i++)
            {
                for(j=0; j<m; j++)
                {
                    scanf("%d",&map[i][j]);
                }
            }
            solve();
            printf("%d\n",dp[n-1][m-1]);
        }
        return 0;
    }
    


  • 相关阅读:
    信息探测
    Hdu 1262 寻找素数对
    Hdu 1263 水果
    Hdu 1261字串数
    Hdu 1253 胜利大逃亡
    Hdu 1237简单计算器
    Hdu 1235 统计同成绩学生人数
    Hdu 1236 排名
    Hdu 1233 还是畅通工程
    Hdu 1234 开门人和关门人
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3102149.html
Copyright © 2011-2022 走看看