深度优先搜索——地宫取宝
2018-06-17 21:49:11来源:未知 阅读 ()
描述:
#include <iostream> #include <cmath> #include <cstring> using namespace std; const int N=1000000007; int ans,n,m,k;//n行m列 k个宝贝 int d[51][51][13][14];//保存状态 int p[51][51];//地图中每个地点宝贝的价值 int dfs(int x,int y,int num,int maxvalue){ if(d[x][y][num][maxvalue+1]!=-1){//如果状态库里有记录就直接在库里查找,不用递归计算 return d[x][y][num][maxvalue+1]; //我不明白为什么要坐标+1 //传进去的值是-1啊,为了防止越界当然要加一 } int t=0;//这个估计是行动方案数的记录 if(x==n-1&&y==m-1){//到达终点 if(p[x][y]>maxvalue){//价值比现有的高 if(num==k||num==k-1) t++; //刚好或差一件都可以+1 } else if(num==k){//刚好就可以+1 t++; } //cout << "终点" <<x << "," << y << " "<< num << " "<< maxvalue<< " " << t <<endl; d[x][y][num][maxvalue+1]=t; return d[x][y][num][maxvalue+1];//这个返回暂时没看懂 } if(x+1<n){//如果再走一步不越界 if(p[x][y]>maxvalue){//价值大于现在 执行下面两种情况 t+=dfs(x+1,y,num+1,p[x][y]); t%=N; t+=dfs(x+1,y,num,maxvalue); t%=N; } else{//小于就只有一种情况 继续走 t+=dfs(x+1,y,num,maxvalue); t%=N; } } if(y+1<m){//如果再走一步不越界 if(p[x][y]>maxvalue){//价值大于现在 执行下面两种情况 t+=dfs(x,y+1,num+1,p[x][y]); t%=N; t+=dfs(x,y+1,num,maxvalue); t%=N; } else{//小于就只有一种情况 继续走 t+=dfs(x,y+1,num,maxvalue); t%=N; } } //cout << "中途" <<x << "," << y << " "<< num << " "<< maxvalue<< " " << t <<endl; d[x][y][num][maxvalue+1]=t; return d[x][y][num][maxvalue+1];//max坐标+1 } int main(){ cin >> n >> m >> k; for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin >> p[i][j]; // for(int i=0;i<51;++i) // for(int j=0;j<51;++j) // for(int p=0;p<13;++p) // for(int q=0;q<14;++q) // d[i][j][p][q]=-1; memset(d,-1,sizeof(d));//全部赋值-1 cout << dfs(0,0,0,-1); //从坐标(0,0) 宝物数0 最大值为-1开始 return 0; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 二叉搜索树_BST 2020-05-30
- 聚合类型与POD类型 2020-05-09
- [题记]有效括号的嵌套深度-leetcode 2020-04-01
- 二叉搜索树3 2020-02-06
- 数据结构---二叉搜索树 2020-02-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash