问题描述

  逗志芃是有妹子的现充,但是有时候妹子就是烦恼。因为逗志芃太逗了,所以这段时间妹子对逗志芃发动了技能无理取闹,妹子要去玩很多的景点。由于逗志芃之前抽机花费了太多的时间,不久以后又要微积分考试了,所以现在被妹子搞成暴走状态了。但是妹子永远是上帝,所以逗志芃只能带妹子出去玩,不过为了节约时间,他希望找到一条花费时间最少的一次性游览线路。

输入格式

  第一行1个数n,表示逗志芃所在的城市有多少个景点,接下来是一个n*n的矩阵。a(i,j)表示i号景点到j号景点的路上花费的时间是多少。
  接下来是一个数m,表示逗志芃妹子要去去的景点数目。由于妹子在无理取闹,所以可能会有重复的景点,不过只要去一次就可以了。接下来是m个数,就是妹子要去的景点编号。

输出格式

  一个数,最少的花费时间。

样例输入

3
0 1 2
1 0 3
2 3 0
3
2 3 1

样例输出

3

数据规模和约定

  0<n<=30,0<m<=20,时间<=1000000

这题就是涉及到了最短路径算法的Floyd算法,再加上dfs遍历所有情况,需要注意的是要在深搜的时候加上剪枝函数,否则会超时。

#floyd,深搜,剪枝
n = int(input())
nums = []
for i in range(n):ans = list(map(int,input().strip().split()))nums.append(ans)
m = int(input())
spot = list(map(int,input().strip().split()))           #妹子想去的城市#使用floyd确定全源最短路径
inf = float('inf')
def floyd(nums):for k in range(n):for i in range(n):for j in range(n):if nums[i][k] != inf and nums[k][j] != inf and nums[i][k]+nums[k][j] < nums[i][j]:nums[i][j] = nums[i][k] + nums[k][j]return nums#dfs的目的是把所有的情况都遍历一遍,找出最优路径
vis = [0 for i in range(m)]         #第i个城市是否被访问
rank = []                           #存储景点的去全排列
res = float('inf')
def dfs(nums,spot,vis,rank):global resif len(rank) == len(spot):sum = find_min(nums,rank)res = min(res,sum)returnif find_min(nums, rank) > res:  # 满足剪枝函数,说明这条线路已经不可能达到最优值了,直接返回即可returnfor i in range(len(spot)):c = spot[i]if vis[i] == 0:        #该点未被访问rank.append(c)vis[i] = 1dfs(nums,spot,vis,rank)rank.pop()vis[i] = 0def find_min(nums,rank):                                    #用于计算rank这个排列需要花费的时间sum = 0for i in range(len(rank)-1):sum += nums[rank[i]-1][rank[i+1]-1]                 #[i+1]目的是表示前一个点与后一个点的最小距离,后面再减一是因为原来[2,3,1]其实表示的是nums的1,2,0return sum
nums = floyd(nums)
dfs(nums,spot,vis,rank)
print(res)

蓝桥杯——算法基础 逗志芃的暴走PYTHON相关推荐

  1. 蓝桥杯 算法训练 逗志芃的危机

    蓝桥杯 算法训练 逗志芃的危机 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和 ...

  2. 蓝桥杯算法训练-逗志芃的危机

    每日更新蓝桥杯题解, 有兴趣关注一波呀 文章目录 题目描述 题解 java代码 C++代码 题目描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和他玩一 ...

  3. 蓝桥杯 算法训练 逗志芃的危机(Java)

    问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和他玩一个游戏,这个游戏是这样的:一共有n个数(n是偶数)写成一行,然后两个人轮流取数,每次只能从最 ...

  4. 算法训练,逗志芃的暴走(Java代码)-蓝桥杯/leetcode

    蓝桥杯试题 算法训练 逗志芃的暴走(Java代码) 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃是有妹子的现充,但是有时候妹子就是烦恼.因为逗志芃太逗了,所以这段时间妹子对 ...

  5. 蓝桥杯 强力党逗志芃 链式前向星结构的树形dp

    // 蓝桥杯 强力党逗志芃 // 采用树形dp,树以链式前向星形式存储#include <iostream> using namespace std;int power[205]; // ...

  6. 试题 算法训练 逗志芃的暴走

    试题 算法训练 逗志芃的暴走 复习累了随便刷了道题,但没想到的是这道dfs有点坑... 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃是有妹子的现充,但是有时候妹子就是烦恼. ...

  7. 蓝桥杯算法训练——逗志凡的危机——动态规划+递归

    算法训练 逗志芃的危机 题目描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和他玩一个游戏,这个游戏是这样的:一共有n个数(n是偶数)写成一行,然后两个 ...

  8. 蓝桥杯 Python 算法训练 逗志芃的暴走

    问题描述 逗志芃是有妹子的现充,但是有时候妹子就是烦恼.因为逗志芃太逗了,所以这段时间妹子对逗志芃发动了技能无理取闹,妹子要去玩很多的景点.由于逗志芃之前抽机花费了太多的时间,不久以后又要微积分考试了 ...

  9. 试题 算法训练 逗志芃的暴走 java实现

    问题描述 逗志芃是有妹子的现充,但是有时候妹子就是烦恼.因为逗志芃太逗了,所以这段时间妹子对逗志芃发动了技能无理取闹,妹子要去玩很多的景点.由于逗志芃之前抽机花费了太多的时间,不久以后又要微积分考试了 ...

最新文章

  1. DotNetCore跨平台~dotnet pack打包详细介绍
  2. NLP领域的ImageNet时代:词嵌入已死,语言模型当立
  3. VS为VC++添加UAC控制(VC程序默认管理员运行)
  4. dotween曲线运动 unity_Unity中DOTween插件的DOTweenPath轨迹移动
  5. 直接点不玩虚的--启明云端千元现金红包、50pcs开发板直播现场拿走不谢
  6. [机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)
  7. Log4j详细设置说明
  8. kafka学习_Kafka 学习笔记01
  9. SLAM Cartographer(7)地图构建器
  10. Redis基础(二)——通用命令和配置
  11. Arkeia Software宣布支持第100个Linux平台
  12. 基于vscode编写markdown导出带书签(目录)的pdf
  13. 时序分析模型——MMMC
  14. android 收税计算器,个人所得税计算器2021
  15. ubuntu fuji xerox scanner扫描仪安装和使用
  16. 程序员的希波克拉底誓言
  17. python自动操作脚本_Python实现自动挂机脚本 | 沐雨浥尘
  18. 工作杂记-关于IOS通过Safari使用https域名访问的坑
  19. ajax提交文件对象----form组件+form表单+FormData对象
  20. VS2010:error C3083: 'Windows': the symbol to the left of a '::' must be a type

热门文章

  1. 某奏云资源网址打不开的N种处理方法(亲测好用)
  2. 推荐几款渗透测试常用的脚本(记得收藏)
  3. eclipse和vs2010 (visual studio)和BBEdit自动排版快捷键(auto format shortcuts)
  4. python语言strip的作用_Python语言中的strip()的理解
  5. Javascript vue 数组中的对象分离 获取对象属性名称 对象属性值
  6. oracle 12c基本管理,oracle 基本管理
  7. 这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已
  8. 怎样恢复计算机管理员用户,忘记了电脑系统Administrator账户的密码?如何恢复?...
  9. 数据结构课程主页-2015级
  10. day05循环结构while循环嵌套控制条件语句方法(函数)