小明目前在做一份毕业旅行的规划。打算从北京出发,分别去若干个城市,然后再回到北京,每个城市之间均乘坐高铁,且每个城市只去一次。由于经费有限,希望能够通过合理的路线安排尽可能的省一些路上的花销。给定一组城市和每对城市之间的火车票的价钱,找到每个城市只访问一次并返回起点的最小车费花销。


输入描述:
城市个数n(1<n≤20,包括北京)
城市间的车票价钱 n行n列的矩阵 m[n][n]
输出描述:
最小车费花销 s
示例1
输入
4
0 2 6 5
2 0 4 4
6 4 0 2
5 4 2 0
输出
13
说明
共 4 个城市,城市 1 和城市 1 的车费为0,城市 1 和城市 2 之间的车费为 2,城市 1 和城市 3 之间的车费为 6,城市 1 和城市 4 之间的车费为 5,依次类推。假设任意两个城市之间均有单程票可购买,且票价在1000元以内,无需考虑极端情况。
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int[][] dist = new int[n][n];for (int i = 0; i < dist.length; i++) {for (int j = 0; j < n; j++) {dist[i][j] = in.nextInt();}}in.close();//随便挑一个作为起点,为方便计算,就选择0城市就好,// 那么对应的事件可以理解为从0号城市出发去(1号、2号、3号城市)最后回到0号城市,其中中间的1、2、3之间的顺序不清楚怎么去的。//但是可以发现事件最小消耗为min(从0->1的距离+从1号到{2号、3号}最后回到0的距离、// 从0->2的距离+从2号到{1号、3号}最后回到0的距离、// 从0->3的距离+从1号到{1号、2号}最后回到0的距离)。// 用bit第几位是否为1表示当前事件有哪几号城市。{2号、3号}——> 110;int V = 1 << (n - 1);int[][] dp = new int[n][V];dp[0][0] = 0;for (int j = 0; j < V; j++) {for (int i = 0; i < n; i++) {if (j == 0) {//表示从第i个城市到第j(0)个城市的最小路径。正好就是第i个城市去第0个城市的距离。dp[i][j] = dist[i][j] + dp[0][0];} else {dp[i][j] = Integer.MAX_VALUE;for (int k = 1; k < n; k++) {//表示第k位城市。int index = (1 << (k - 1));//当前的dp应该是遍历了j城市集的每一个城市对应的子dp+i到k的距离,求得的其中的最小的那个值;if ((index & j) > 0) {//找到其中的一个k;//表示j城市集内除了第k位其他的别的城市int other = j ^ index;dp[i][j] = Math.min(dist[i][k] + dp[k][other], dp[i][j]);}}}}}System.out.println(dp[0][V - 1]);}
}

字节编程题 毕业旅行问题相关推荐

  1. [编程题]毕业旅行问题

    [编程题]毕业旅行问题 时间限制:1秒 空间限制:32768K 小明目前在做一份毕业旅行的规划.打算从北京出发,分别去若干个城市,然后再回到北京,每个城市之间均乘坐高铁,且每个城市只去一次.由于经费有 ...

  2. 字节跳动2019春招第二次笔试编程题

    字节跳动2019春招第二次笔试编程题 1.变身程序员 题目描述 输入描述 输出描述 示例 示例1 示例2 示例3 分析 参考代码 2.特征提取 题目描述 输入描述 输出描述 示例 示例1 备注 分析 ...

  3. 字节跳动---毕业旅行问题

    字节跳动-毕业旅行问题 文章目录 字节跳动---毕业旅行问题 一.问题描述 二.分析 三.代码 一.问题描述 小明目前在做一份毕业旅行的规划.打算从北京出发,分别去若干个城市,然后再回到北京,每个城市 ...

  4. 字节跳动秋招笔试四道编程题(2021-08-29)

    以下字节笔试编程题代码及思路由@nuoyanli提供,有兴趣的可以去这位ACM专业打铁选手那里找到更多刷题技巧. 文章目录 第一道:第一题自然数a.b(100%) 题目描述 思路 参考代码: 第二道: ...

  5. 字节跳动2019春招研发部分编程题汇总【题解】

    差不多2个小时才AK,题目难度还行吧. 自己好菜. 题目地址:https://www.nowcoder.com/test/16516564/summary 目录 万万没想到之聪明的编辑 [模拟] 万万 ...

  6. 字节跳动2019春招研发部分编程题汇总(Python版本)

    一.万万没想到之聪明的编辑 王大锤是一家出版社的编辑,负责校对投稿来的英文稿件,他发现一个发现拼写错误的捷径: 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> ...

  7. ❤️TikTok字节跳动编程题实战2022校招——吐血分享总结(第一弹)。

    ❤️TikTok字节跳动编程题实战2022校招--吐血分享总结. 前言+说明 一.算法编程题(种树) 二.算法编程题(小A的吃鸡之旅) 三.算法编程题(有序最大K位数) 四.算法编程题(测试计划的最大 ...

  8. 20多岁大专生吐槽:面试39岁同济大学毕业的测试专家,对方却连简单编程题都不会!...

    互联网行业有多残酷? 一个20多岁的大专毕业生吐槽:面试一个39岁的同济大学毕业生,考了一道小编程题,她没做好,其他方面也不是很好.看简历,她之前都是测试专家.测试负责人等. 楼主感叹:不敢想自己的4 ...

  9. 字节跳动2019春招研发部分编程题汇总

    一:万万没想到之聪明的编辑 题目描述 给定一个字符串,按照要求修改字符串,输出最后的结果 1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello 2 ...

最新文章

  1. 提供前进、后退功能及其他JAVASCRIPT速成秘诀
  2. “网工”可以跳越“网管”吗?
  3. springboot调用python脚本_Springboot实现上传文件接口,使用python的requests进行组装报文上传文件的方法...
  4. linux添加虚拟硬盘命令,虚拟机linux扩盘命令操作
  5. 他毕业于北师大,编写了我国首套数学教材,陈景润华罗庚都崇拜他
  6. 红与黑(信息学奥赛一本通-T1216)
  7. Magento教程 1:免费购物车系统,轻松建立Magento第一步!
  8. Smarty 2、3版本的一些差别
  9. Java 线程之间通信
  10. 函数的定义、返回值和参数
  11. 绿盟漏洞扫描工具_IDC盘点2020上半年中国安全市场绿盟科技再获响应和编排能力认可...
  12. html做成分页,静态html分页
  13. win10打不开图片,文件系统错误 (-2147219196)修复的方法
  14. 5类人最适合做程序员,你属于哪一类?
  15. 决策易贴心黑科技第2波,智能巡店更高效!
  16. 自定义view从0到1
  17. html5中音频循环那个属性,HTML5音频audio属性
  18. PandoraBox多拨
  19. 智能卡与RFID技术
  20. 使用OBS-Studio软件推流直播教程,支持RTMP及RTSP两种协议

热门文章

  1. 关于开源软件License的说明
  2. 【ZT】一个程序占用内存的分类
  3. NOIP11.15模拟 T2 三部曲
  4. Android 手机开发和机顶盒开发的区别(软件角度)
  5. 医疗随访系统-----实验室项目
  6. 请写出sfr和sbit的语句格式_单片机关键字sfr和sbit区别
  7. CatDriver 小米 猫盘 Boot Info
  8. P44 单行子查询案例分析
  9. 基于微信在线考试小程序系统设计与实现 开题报告
  10. 十一月英语——English In Novermber