文章目录

  • 1. 题目
  • 2. 解题

1. 题目

力扣想让一个最优秀的员工在 N 个城市间旅行来收集算法问题。
但只工作不玩耍,聪明的孩子也会变傻,所以您可以在某些特定的城市和星期休假。
您的工作就是安排旅行使得最大化你可以休假的天数,但是您需要遵守一些规则和限制。

规则和限制:

  • 您只能在 N 个城市之间旅行,用 0 到 N-1 的索引表示。一开始,您在索引为0的城市,并且那天是星期一
  • 这些城市通过航班相连。这些航班用 N*N 矩阵 flights(不一定是对称的)表示,flights[i][j] 代表城市i到城市j的航空状态。如果没有城市i到城市j的航班,flights[i][j] = 0;否则,flights[i][j] = 1。同时,对于所有的 i,flights[i][i] = 0
  • 您总共有 K 周(每周7天)的时间旅行。您每天最多只能乘坐一次航班,并且只能在每周的星期一上午乘坐航班。由于飞行时间很短,我们不考虑飞行时间的影响。
  • 对于每个城市,不同的星期您休假天数是不同的,给定一个 N*K 矩阵 days 代表这种限制,days[i][j] 代表您在第j个星期在城市i能休假的最长天数。
    给定 flights 矩阵和 days 矩阵,您需要输出 K 周内可以休假的最长天数。
示例 1:
输入:flights = [[0,1,1],[1,0,1],[1,1,0]],
days = [[1,3,1],[6,0,3],[3,3,3]]
输出: 12
解释:
Ans = 6 + 3 + 3 = 12.
最好的策略之一:
第一个星期 : 星期一从城市0飞到城市1,玩6天,工作1天。
(虽然你是从城市0开始,但因为是星期一,我们也可以飞到其他城市。)
第二个星期 : 星期一从城市1飞到城市2,玩3天,工作4天。
第三个星期 : 呆在城市2,玩3天,工作4天。示例 2:
输入:flights = [[0,0,0],[0,0,0],[0,0,0]],
days = [[1,1,1],[7,7,7],[7,7,7]]
输出: 3
解释:
Ans = 1 + 1 + 1 = 3.
由于没有航班可以让您飞到其他城市,你必须在城市0呆整整3个星期。
对于每一个星期,你只有一天时间玩,剩下六天都要工作。
所以最大休假天数为3.示例 3:
输入:flights = [[0,1,1],[1,0,1],[1,1,0]],
days = [[7,0,0],[0,7,0],[0,0,7]]
输出: 21
解释:
Ans = 7 + 7 + 7 = 21
最好的策略之一是:
第一个星期 : 呆在城市0,玩7天。
第二个星期 : 星期一从城市0飞到城市1,玩7天。
第三个星期 : 星期一从城市1飞到城市2,玩7天。注意:
N 和 K 都是正整数,在 [1, 100] 范围内。
矩阵 flights 的所有值都是 [0, 1] 范围内的整数。
矩阵 days 的所有值都是 [0, 7] 范围内的整数。
超过休假天数您仍可以呆在那个城市,但是在额外的日子您需要 工作 ,
这些日子不会算做休假日。
如果您从城市A飞往城市B并在当天休假日,
这个休假会被算作是城市B的休假日。
我们不考虑飞行时间对计算休假日的影响。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-vacation-days
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {public:int maxVacationDays(vector<vector<int>>& flights, vector<vector<int>>& days) {int dp[100][100];// 在 i 城市时, 是第 k 周, 最多休假天数memset(dp, 0xff, sizeof(dp));int n = flights.size(), k = days[0].size(), maxdays = 0;for(int i = 0; i < n; ++i){//可以待在原地不走flights[i][i] = 1;}       for(int i = 0; i < n; ++i)//初始化第0周{if(flights[0][i])//0城市可以飞到i城市{dp[i][0] = days[i][0];maxdays = max(maxdays, dp[i][0]);}}for(int wk = 1; wk < k; ++wk)//遍历剩余的周{for(int i = 0; i < n; ++i)//遍历每个城市{if(dp[i][wk-1] == -1)//上周i城市的状态不存在continue;for(int j = 0; j < n; ++j)//我要去 j 城市{if(!flights[i][j])//没有航班,不行continue;dp[j][wk] = max(dp[j][wk], dp[i][wk-1]+days[j][wk]);maxdays = max(maxdays, dp[j][wk]);}}}return maxdays;}
};

276 ms 18.6 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 568. 最大休假天数(DP)相关推荐

  1. ​LeetCode刷题实战568:最大休假天数

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  2. LeetCode 85. 最大矩形(DP/单调递增栈,难)

    文章目录 1. 题目 2. 解题 2.1 DP 2.2 单调递增栈 1. 题目 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积. 示例: 输入: [[" ...

  3. LeetCode 221. 最大正方形(DP)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积. 示例: 来源:力扣(LeetCode) 链接:https:/ ...

  4. mysql计算年休假天数_如何计算年假多少天

    现在越来越多的企业职工都能享受到带薪年假的这一项法定福利了,但是还有好多人对于自己可以休多少天年假自己不是很清楚怎么计算的.以下就是找法网小编整理关于如何计算年假多少天的具体内容知识. 一.如何计算年 ...

  5. mysql计算年休假天数_年休假的工作年限和天数如何计算公式

    向我提问 赖贺明律师 解答问题:13229条 |好评:149个 " 一.法律根据 <职工带薪年休假条例>.<企业职工带薪年休假实施办法> 二.职工享受带薪年休假的天数 ...

  6. mysql计算年休假天数_如何计算年休假天数

    向我提问 赖贺明律师 解答问题:13229条 |好评:149个 " 一.法律根据 <职工带薪年休假条例>.<企业职工带薪年休假实施办法> 二.职工享受带薪年休假的天数 ...

  7. mysql计算年休假天数_年休假的工作年限和天数如何计算

    向我提问 赖贺明律师 解答问题:13229条 |好评:149个 " 一.法律根据 <职工带薪年休假条例>.<企业职工带薪年休假实施办法> 二.职工享受带薪年休假的天数 ...

  8. SqlServer触发器计算年休假天数

    SqlServer触发器计算年休假天数 表结构 触发器代码 根据插入语句中的进入本单位工作时间字段,自动计算年休假天数 数据库:sqlsever2012 表结构 触发器代码 SET ANSI_NULL ...

  9. LeetCode题解(0568):最大休假天数(Python)

    题目:原题链接(困难) 标签:动态规划 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O ( N 2 K ) O(N^2K) O(N2K) O ( N ) O(N) O(N) ...

最新文章

  1. 滚动视差?CSS 不在话下
  2. C++ 函数的引用返回值
  3. ajax xmlhttp.responsetext,Ajax:xmlhttp.responseText响应显示完整的内部HTML而不是关闭所需文本...
  4. C# WebAPI设置跨域
  5. Sublime Text2,跨平台神级编辑器乱码问题解决
  6. java游戏猿人时代_学习java编程就业前景如何
  7. 盘点过去10年美国规模最大科技公司IPO:阿里一直是纪录保持者
  8. python datetime库_python datetime库使用代码详解
  9. 触控屏c语言程序,TouchWin编程软件下载_TouchWin触摸屏软件下载 2.D.2c 官网版_当载软件站...
  10. CentOS6修改/etc/fstab文件造成系统无法启动的问题
  11. 前端数据可视化echarts.js使用指南
  12. Hbase支持snappy压缩格式
  13. 计算机基础应用期中试卷,计算机应用基础期中考试计算机试卷.doc
  14. 如何监控电瓶车,根据交通规则推送给信息和罚单
  15. python not in函数用法,pandas is in和not in的使用说明
  16. mysql查询同名同姓重名人数_查全国同名同姓,怎样查重名人数查询
  17. dijkstra习题集
  18. 完整的js写的省市级的程序
  19. 【Android初级】什么是ANR?如何防止?如何修复?
  20. 缺失MSVCP120D.dll和MSVCR120D.dll

热门文章

  1. **print('人生苦短 我爱Python')**
  2. java后期发展方向_Java程序员的4个职业发展方向,该如何把握黄金5年?
  3. resin指定java版本_resin的几个常用配置
  4. php pdo操作mysql_PHP操作数据库详细(PDO)
  5. miui12 android系统耗电,miui12耗电严重怎么办,miui12续航优化方法
  6. 5类6类7类网线对比_孩子们长高的黄金时期是从3月到5月,这阶段多吃6类食物长得快...
  7. SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中
  8. Humble Numbers USCAO chapter 3.1
  9. VBA之六--EXCEL VBA两则
  10. MySQL中rename一个view对应的SQL语句