题目是这样的,貌似一开始我这个英语搓的人还理解错了。。。orz

http://acm.hdu.edu.cn/showproblem.php?pid=1142

就是最短路,只不过用dijkstra是从终点到源点,然后再dfs从源点开始搜。。。

好吧,这个记忆化搜索还是挺好用的。。。

View Code

 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 记忆化搜索相关推荐

  1. hdu 4722(记忆化搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 思路:简单的记忆化搜索,留意一下A==0时的情况就可以了. 1 #include<iost ...

  2. hdu 1514 记忆化搜索

    题意是给4堆(堆的高度小于等于40)有颜色(颜色的种类小于等于20)的物品,你有一个篮子最多能装5件物品,每次从这4堆物品里面 任取一件物品放进篮子里,但是取每堆物品时,必须先取上面的物品,才能取下面 ...

  3. hdu 1078 记忆化搜索

    题意:给出n*n的格子,每个各自里面有些食物,问一只老鼠每次走最多k步所能吃到的最多的食物 虽然是做过的老题了,但是1A的感觉好爽,对搜索认识更深了 1 #include<cstdio> ...

  4. hdu 4597 Play Game(记忆化搜索)

    题目链接:hdu 4597 Play Game 题目大意:给出两堆牌,仅仅能从最上和最下取,然后两个人轮流取,都依照自己最优的策略.问说第一个人对多的分值. 解题思路:记忆化搜索,状态出来就很水,dp ...

  5. HDU 1176 免费馅饼(记忆化搜索)

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  6. HDU 漫步校园 (记忆化搜索)

    漫步校园 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissi ...

  7. HDU 2452 Navy maneuvers (记忆化搜索)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2452 题意:给出一个图,n个点,m条边,保证无环,每个点有一个权值.指定一个点作为起点,Victory和G ...

  8. HDU 5001 概率DP || 记忆化搜索

    2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP  測 ...

  9. hdu 1078(记忆化搜索)

    题意: 老鼠每次最多走k步停下来,停下的这个位置只能比上一个停留的位置大,并获取其价值,每次只能水平或垂直走,问最大能得到的价值 解题思路:这道题可以用记忆化搜索解决,dp[i][j]表示老鼠在位置( ...

最新文章

  1. mysql 同机做主从
  2. (软件工程复习核心重点)第六章实现和测试-第八节:调试
  3. Andorid AlertDialog 点击后自动消失_不看后悔!2011年别克更换完变速箱电脑后,要如何做设定匹配...
  4. 【转】UINavigationBar 使用总结
  5. mysql slave修改_MySql主从复制(初学笔记)
  6. JAVA:泛型通配符T,E,K,V区别,T以及Class,Class的区别
  7. 《The C programming language》学习笔记
  8. Atitit php db mysql api<?php$mysql_conf = array( ‘host‘ => ‘localhost‘, ‘db‘ => ‘mysql
  9. MySQL驱动到底是什么东西?
  10. C# RichTextBox 制作文本编辑器
  11. win10插入耳机还是外放
  12. Meta-learning algorithms for Few-Shot Computer Vision 论文解读(二)
  13. 头条等互联网公司面试准备、HR、Android技术等面试问题汇总
  14. 简单读!Mybatis源码(一)一条select的一生
  15. 路径规划 | 图解LPA*算法(附ROS C++/Python/Matlab仿真)
  16. 论文阅读:A Survey on Transfer Learning
  17. 香港中文大学校长计算机,喜讯 | 香港中文大学(深圳)理工学院黄建伟教授团队在IEEE计算机通信国际会议INFOCOM发表四篇论文...
  18. 关于EasyExcel的invoke方法读取多少列
  19. oracle SQL语句硬编码带来的问题以及解决办法
  20. 基于Android的医院挂号APP的设计与实现

热门文章

  1. java中使用httpget_如何在Java中进行HTTP GET?
  2. r语言mfrow全程_如何使用R完成文章中图片处理小教程
  3. 打印机一直显示正在打印中_汉印CP4000:照片打印机中的“实力派”!支持无线打印,自动覆膜...
  4. STM32F103单片机PWM单脉冲输出模式
  5. 阿里天池供应链需求预测比赛小结
  6. mybatis-generator-maven-plugin插件自动生成代码的配置方法
  7. Java虚拟机层面的几种锁
  8. 代码运行错误及解决方法
  9. 如何写好学术期刊文章?
  10. 运行时数据区——Java虚拟机栈