hdu 1142 记忆化搜索
题目是这样的,貌似一开始我这个英语搓的人还理解错了。。。orz
http://acm.hdu.edu.cn/showproblem.php?pid=1142
就是最短路,只不过用dijkstra是从终点到源点,然后再dfs从源点开始搜。。。
好吧,这个记忆化搜索还是挺好用的。。。
1 #include<iostream> 2 #include<cstring> 3 const int N=1010; 4 const int inf=99999999; 5 using namespace std; 6 7 int edge[N][N]; 8 int dist[N]; 9 int visited[N],s[N]; 10 int n,m; 11 12 void Dijkstra(int v0){ 13 memset(visited,0,sizeof(visited)); 14 for(int i=1;i<=n;i++){ 15 dist[i]=edge[v0][i]; 16 } 17 dist[v0]=0; 18 visited[v0]=1; 19 for(int i=1;i<n;i++){ 20 int min=inf,u=v0; 21 for(int j=1;j<=n;j++){ 22 if(!visited[j]&&dist[j]<min) 23 u=j,min=dist[j]; 24 } 25 if(min==inf)return ; 26 visited[u]=1; 27 for(int k=1;k<=n;k++){ 28 if(!visited[k]&&edge[u][k]<inf&&dist[u]+edge[u][k]<dist[k]){ 29 dist[k]=edge[u][k]+dist[u]; 30 } 31 } 32 } 33 } 34 //记忆化搜索 35 int dfs(int v){ 36 if(s[v]) return s[v]; //如果该点已经访问过了,就返回到该点的路径数 37 if(v==2)return 1; //找到终点,返回1条路 38 for(int i=1;i<=n;i++){ 39 if(edge[v][i]<inf&&dist[i]<dist[v]){ 40 s[v]+=dfs(i); 41 } 42 } 43 return s[v]; //返回到该点的所有路径数 44 } 45 46 int main(){ 47 while(scanf("%d",&n)!=EOF){ 48 if(n==0)break; 49 scanf("%d",&m); 50 for(int i=1;i<=n;i++){ 51 for(int j=1;j<=n;j++){ 52 if(i==j)edge[i][j]=0; 53 else edge[i][j]=inf; 54 } 55 } 56 int a,b,dis; 57 for(int i=1;i<=m;i++){ 58 scanf("%d%d%d",&a,&b,&dis); 59 if(edge[a][b]>=dis){ 60 edge[a][b]=edge[b][a]=dis; 61 } 62 } 63 Dijkstra(2); 64 memset(s,0,sizeof(s)); 65 int count=dfs(1); 66 printf("%d\n",count); 67 } 68 return 0; 69 }
转载于:https://www.cnblogs.com/wally/archive/2013/01/29/2881732.html
hdu 1142 记忆化搜索相关推荐
- hdu 4722(记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 思路:简单的记忆化搜索,留意一下A==0时的情况就可以了. 1 #include<iost ...
- hdu 1514 记忆化搜索
题意是给4堆(堆的高度小于等于40)有颜色(颜色的种类小于等于20)的物品,你有一个篮子最多能装5件物品,每次从这4堆物品里面 任取一件物品放进篮子里,但是取每堆物品时,必须先取上面的物品,才能取下面 ...
- hdu 1078 记忆化搜索
题意:给出n*n的格子,每个各自里面有些食物,问一只老鼠每次走最多k步所能吃到的最多的食物 虽然是做过的老题了,但是1A的感觉好爽,对搜索认识更深了 1 #include<cstdio> ...
- hdu 4597 Play Game(记忆化搜索)
题目链接:hdu 4597 Play Game 题目大意:给出两堆牌,仅仅能从最上和最下取,然后两个人轮流取,都依照自己最优的策略.问说第一个人对多的分值. 解题思路:记忆化搜索,状态出来就很水,dp ...
- HDU 1176 免费馅饼(记忆化搜索)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 漫步校园 (记忆化搜索)
漫步校园 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissi ...
- HDU 2452 Navy maneuvers (记忆化搜索)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2452 题意:给出一个图,n个点,m条边,保证无环,每个点有一个权值.指定一个点作为起点,Victory和G ...
- HDU 5001 概率DP || 记忆化搜索
2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP 測 ...
- hdu 1078(记忆化搜索)
题意: 老鼠每次最多走k步停下来,停下的这个位置只能比上一个停留的位置大,并获取其价值,每次只能水平或垂直走,问最大能得到的价值 解题思路:这道题可以用记忆化搜索解决,dp[i][j]表示老鼠在位置( ...
最新文章
- mysql 同机做主从
- (软件工程复习核心重点)第六章实现和测试-第八节:调试
- Andorid AlertDialog 点击后自动消失_不看后悔!2011年别克更换完变速箱电脑后,要如何做设定匹配...
- 【转】UINavigationBar 使用总结
- mysql slave修改_MySql主从复制(初学笔记)
- JAVA:泛型通配符T,E,K,V区别,T以及Class,Class的区别
- 《The C programming language》学习笔记
- Atitit php db mysql api<?php$mysql_conf = array( ‘host‘ => ‘localhost‘, ‘db‘ => ‘mysql
- MySQL驱动到底是什么东西?
- C# RichTextBox 制作文本编辑器
- win10插入耳机还是外放
- Meta-learning algorithms for Few-Shot Computer Vision 论文解读(二)
- 头条等互联网公司面试准备、HR、Android技术等面试问题汇总
- 简单读!Mybatis源码(一)一条select的一生
- 路径规划 | 图解LPA*算法(附ROS C++/Python/Matlab仿真)
- 论文阅读:A Survey on Transfer Learning
- 香港中文大学校长计算机,喜讯 | 香港中文大学(深圳)理工学院黄建伟教授团队在IEEE计算机通信国际会议INFOCOM发表四篇论文...
- 关于EasyExcel的invoke方法读取多少列
- oracle SQL语句硬编码带来的问题以及解决办法
- 基于Android的医院挂号APP的设计与实现
热门文章
- java中使用httpget_如何在Java中进行HTTP GET?
- r语言mfrow全程_如何使用R完成文章中图片处理小教程
- 打印机一直显示正在打印中_汉印CP4000:照片打印机中的“实力派”!支持无线打印,自动覆膜...
- STM32F103单片机PWM单脉冲输出模式
- 阿里天池供应链需求预测比赛小结
- mybatis-generator-maven-plugin插件自动生成代码的配置方法
- Java虚拟机层面的几种锁
- 代码运行错误及解决方法
- 如何写好学术期刊文章?
- 运行时数据区——Java虚拟机栈