HDU 漫步校园 (记忆化搜索)
漫步校园
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 41 Accepted Submission(s) : 14
#include<iostream> #include<queue> #include<cstdio> #include<cstring>using namespace std;const int N=60; const int INF=99999999;int map[N][N]; int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};struct node{int x,y; };int n; int dis[N][N],visited[N][N]; long long res[N][N];void BFS(){ //BFS求最短路queue<node> myqueue;while(!myqueue.empty())myqueue.pop();int i,j,k;for(i=0;i<N;i++)for(j=0;j<N;j++)dis[i][j]=INF;memset(visited,0,sizeof(visited));dis[n][n]=map[n][n];node cur,next;cur.x=n;cur.y=n;myqueue.push(cur);visited[cur.x][cur.y]=1;int x,y;while(!myqueue.empty()){cur=myqueue.front();myqueue.pop();visited[cur.x][cur.y]=0;for(k=0;k<4;k++){next.x=x=cur.x+dir[k][0];next.y=y=cur.y+dir[k][1];if(x>=1 && x<=n && y>=1 && y<=n && dis[x][y]>dis[cur.x][cur.y]+map[x][y]){dis[x][y]=dis[cur.x][cur.y]+map[x][y];if(!visited[x][y]){visited[x][y]=1;myqueue.push(next);}}}} }long long DFS(int x,int y){ //DFS求路径数量,使用记忆搜索优化。if(x==n && y==n)return 1;if(res[x][y]!=-1)return res[x][y];res[x][y]=0;int si,sj,k;for(k=0;k<4;k++){si=x+dir[k][0];sj=y+dir[k][1];if(si>=1 && si<=n && sj>=1 && sj<=n && dis[si][sj]<dis[x][y])res[x][y]+=DFS(si,sj);}return res[x][y]; }int main(){//freopen("input.txt","r",stdin);while(scanf("%d",&n)!=EOF){for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&map[i][j]);BFS();memset(res,-1,sizeof(res));printf("%I64d\n",DFS(1,1));}return 0; }
HDU 漫步校园 (记忆化搜索)相关推荐
- 22.12.1打卡 漫步校园 记忆化搜索
题目里很显然只走最短路, 直接用bfs从终点到起点搜一遍将每一步到终点所需要的最短的时间存在一个dis数组中, 然后你就会发现原来的地图变成了这样 上面是地图下面是dis数组, 再看看经典记忆化搜索模 ...
- hdoj1428 -- 漫步校园 (记忆化搜索)
漫步校园 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- hdu 1078(记忆化搜索)
题意: 老鼠每次最多走k步停下来,停下的这个位置只能比上一个停留的位置大,并获取其价值,每次只能水平或垂直走,问最大能得到的价值 解题思路:这道题可以用记忆化搜索解决,dp[i][j]表示老鼠在位置( ...
- How many ways HDU - 1978(记忆化搜索关于求多少种方式模板)
题目: 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m).游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量. 2.机器人只能向右或 ...
- FatMouse and Cheese HDU - 1078(记忆化搜索入门模板)
题意: n * n的正方形格子(每个格子均放了奶酪),老鼠从(0,0)开始,每次最多移动k步,可以选择上下左右四个方向移动,下一个移动点奶酪块数量必须要大于当前点. 整理模板ing- 题目: FatM ...
- POJ1088 滑雪题解+HDU 1078(记忆化搜索DP)
Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...
- hdu 4722(记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 思路:简单的记忆化搜索,留意一下A==0时的情况就可以了. 1 #include<iost ...
- hdu 4597 Play Game(记忆化搜索)
题目链接:hdu 4597 Play Game 题目大意:给出两堆牌,仅仅能从最上和最下取,然后两个人轮流取,都依照自己最优的策略.问说第一个人对多的分值. 解题思路:记忆化搜索,状态出来就很水,dp ...
- hdu 1142 记忆化搜索
题目是这样的,貌似一开始我这个英语搓的人还理解错了...orz http://acm.hdu.edu.cn/showproblem.php?pid=1142 就是最短路,只不过用dijkstra是从终 ...
最新文章
- 论文《一种金融市场预测的深度学习模型:FEPA》(3)--EMD+PCA
- 高速跟踪--High-Speed Tracking-by-Detection Without Using Image Information
- 如何用ActionScript制作绚丽的特效——Silk
- 【MaxCompute】学习笔记常用查询sql
- 给C#开发者的代码审查清单
- PHP预防XSS攻击,ajax跨域攻击的方法
- java void方法_Java对象类的最终void wait(long ms)方法,包含示例
- 阿联酋起源人工智能研究院(IIAI)诚邀优秀人才加盟
- iis解析错误的编号_2019年网络工程师考试试题及解析(上午21-44题)
- 多个 Linux 发行版考虑移除 Chromium 软件包
- hadoop 2.6.4 java_Windows下使用Hadoop2.6.0
- 微软sql服务器双机热备,office2014-SQL Server2014 R2 双机热备,保护你的数据
- 宏基4752g linux驱动下载,宏基4752g显卡驱动
- 读程士宏之《测度论与概率论基础》
- 前端架构之 React 领域驱动设计
- CTC,RNN-Transducer, LAS
- 通过GPRS 模块M26程序实现 实时时钟
- csp-j/s组第一轮测试140题版本模拟试题及解析
- 描写油菜花的好句好段
- 青少年为何有时不会换位思考
热门文章
- java数组_Java数组
- aws rds恢复数据库_Amazon RDS – AWS关系数据库服务
- 人工智能时代,技术人员应该掌握的技能
- Spring Cloud 分布式链路跟踪 Sleuth + Zipkin + Elasticsearch
- 防止easyui的DataGride莫名其妙的选中最后一行或删除后编辑信息提示已有选中项的bug...
- nodejs(koajs)设置中文cookie无效
- TypeScript + ES6
- mycat1.4.1小白用户入门(一)
- 正则式获取特定标识的字符串并替换
- LeetCode题解:Add Two Numbers