hdu1978(递推dp)
生活随笔
收集整理的這篇文章主要介紹了
hdu1978(递推dp)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1978
?
分析:
遞推DP。
dp[][]表示可以到達(dá)改點(diǎn)的方法數(shù)。
剛開始:
外循環(huán)掃描所有點(diǎn)dp[x][y],而內(nèi)循環(huán)掃描出所有可以到達(dá)
點(diǎn)x、y的點(diǎn)i、j。
那么dp[x][y]就是所有的dp[i][l]之和。
?
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <cstdlib> #include <vector> #include <set> #include <map> #define LL long long using namespace std; int dp[110][110]; int a[110][110]; int main() {int t,n,m;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&a[i][j]);memset(dp,0,sizeof(dp));dp[1][1]=1;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){for(int k=1;k<=i;k++)for(int l=1;l<=j;l++){if(i-k+j-l<=a[k][l]){if(i==k&&j==l)break;dp[i][j]+=dp[k][l];}}dp[i][j]%=10000;}printf("%d\n",dp[n][m]);} } View Code?
轉(zhuǎn)載于:https://www.cnblogs.com/lienus/p/4118457.html
總結(jié)
以上是生活随笔為你收集整理的hdu1978(递推dp)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android基础_数据存储
- 下一篇: Memcached初探