HUD 1978——How many ways
来源:互联网 发布:下载站源码 编辑:程序博客网 时间:2024/05/22 13:32
记忆化搜索。
假设起点变成(n,m),终点变成(1,1)。
dp[i][j]存储到起点该点的路径数。赋值dp[n][m]=1.
从(1,1)往回搜索,一旦遇到dp>0.说明已经被搜索过了,直接返回。
#include<cstdio>#include<iostream>#include<cstring>using namespace std;#define maxn 105#define mod 10000int map[maxn][maxn],dp[maxn][maxn];void DpSet(int n,int m){int i,j;for(i=1;i<=n;i++)for(j=1;j<=m;j++)dp[i][j]=-1;}int dfs(int a,int b,int n,int m){if(dp[a][b]>0)return dp[a][b];int i,j,sum=0;int t;t=map[a][b];for(i=0;i<=t;i++)for(j=0;j<=t;j++)if(i!=0||j!=0)if(i+j<=t&&i+a<=n&&j+b<=m){sum+=dfs(i+a,j+b,n,m);if(sum>9999)sum%=mod;}dp[a][b]=sum;return sum;}int main(){int t,n,m,i,j;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);DpSet(n,m);for(i=1;i<=n;i++)for(j=1;j<=m;j++)scanf("%d",&map[i][j]);dp[n][m]=1;cout<<dfs(1,1,n,m)<<endl;}return 0;}
- HUD 1978——How many ways
- hdu 1978 How many ways
- hdu 1978 How many ways
- hdu 1978 How many ways
- hdu 1978 How many ways
- hdu 1978 How many ways
- hdu 1978 How many ways
- hdu 1978 How many ways
- HDU 1978 How many ways
- hdu 1978 How many ways
- hdu 1978 How many ways
- HDU - 1978 How many ways
- hdu 1978 How many ways
- hdu 1978 How many ways
- hdu 1978 How many ways
- hdu 1978 How many ways
- HDU 1978 How many ways
- HDU 1978 How many ways
- 时间类,静态成员
- 用Excel制作甘特图并管理项目
- 有关0x67a9
- 扩展欧几里德 之 五指山 nefu 84
- Ubuntu 防火墙配置
- HUD 1978——How many ways
- 动态链接 静态链接
- C标准库中字符与数字的转换函数
- 自定义ListView item包含checkbox实现单选和多选
- App应用里应该自动跳转到系统设置界面吗?
- 词法分析——实验过程中遇到的问题
- 子网划分及子网掩码计算方法
- 常用查询条件\分组 group by\having和where的区别\union查询
- TCP 分段和IP分片对比