hdu1978How many ways(记忆化搜索)(基于深搜)
来源:互联网 发布:二号首长 知乎 编辑:程序博客网 时间:2024/06/17 02:44
题目链接:click here~
题目解析:记忆化搜索:即记录下已经搜索过的点,当再次搜到这个点的时候,直接返回值,不需要再深搜下去(因为此点到终点的方式数已经计算出来了)。
代码如下:
#include<cstdio>#include<cstring>int dp[105][105];int map[105][105];int m,n;bool judge(int x,int y){ if(x>=1&&x<=m&&y>=1&&y<=n) return true; return false;}int dfs(int x,int y){ if(dp[x][y]>=0) return dp[x][y]; //说明此点已经搜过,并且到达终点的方式已经记录下来,所以直接返回 else { dp[x][y]=0; //初始值为0 for(int i=0;i<=map[x][y];i++) //确定搜索的范围 for(int j=0;j<=map[x][y]-i;j++) { if(judge(x+i,y+j)) { dp[x][y]=(dp[x][y]+dfs(x+i,y+j))%10000; } } } return dp[x][y];}int main(){ int icase; scanf("%d",&icase); while(icase--) { scanf("%d%d",&m,&n); for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) scanf("%d",&map[i][j]); memset(dp,-1,sizeof(dp)); dp[m][n]=1; //终点的方式是1 dfs(1,1); printf("%d\n",dp[1][1]); } return 0;}
0 0
- hdu1978How many ways(记忆化搜索)(基于深搜)
- hdu1978How many ways (记忆化搜索+DFS)
- HDU1978How Many Ways 记忆化dfs+dp
- How many ways(记忆化搜索)
- hdu 1978 How many ways(记忆化搜索)
- hdu 1978 How many ways(DP | 记忆化搜索)
- hdu 1978 How many ways(记忆化搜索)
- hdu 1978 How many ways(记忆化搜索dp)
- HDOJ1978 How many ways(记忆化搜索)
- HDU1978-How many ways(记忆化搜索)
- HDU 1978 How many ways(记忆化搜索)
- HDU 1978 How many ways(记忆化搜索)
- How many ways(dfs+记忆化搜索)
- hdu1978--How many ways(记忆化搜索)
- How many ways 记忆化搜索
- HDU1937How many ways(记忆化搜索)入门
- 【记忆化搜索】How many (fucking) ways?
- 记忆化搜索(搜索+动态规划)HDU1978 How Many Ways
- 如何用VC编写动态链接库(DLL)
- ubuntu打开txt中文乱码解决
- 一些周期性GC的原因
- UVa 567 - Risk
- poj中的大数乘法!
- hdu1978How many ways(记忆化搜索)(基于深搜)
- 完全背包变形--hdu-1114-Piggy-Bank
- C++命名规范
- poj 2255 Tree Recovery(二叉树的遍历)
- flash builder + AS json解析
- 如何查看某个网站的ip地址(根据域名怎么知道IP)
- 修改对话框中所有控件的窗口样式
- 【ZOJ】2676 Network Wars 01分数规划+最小割
- BIRCH算法(Java实现)