28 動態規劃解按摩師的最長預約時間

問題描述:一名有名的按摩師會受到源源不斷的預約請求,每個預約都可以選擇接或者不接,在每次預約服務之間要有休息時間,因此不能接相鄰的預約,給定一個請求序列,按摩師找到最優的預約集合(總預約時間最長),返回總的分鐘數;

遞歸方法求解:如果上一個選擇了接,則此個預約不能接,如果上一個沒有選擇接,則這個預約可以選擇接或者不接兩種選擇,使用一個參變量表征上一個是否接客,并在到達最后的時候將結果保存在最大堆中,最后彈出頂上的元素;并使用一個sum保存之前累積的值

public void getMaxTime(int []nums,int index,int isLastChoose,int sum,PriorityQueue<Integer>maxheap)
{
if(inedx==nums.length)
{
maxHeap.add(sum);
return?
}
if(isLastChoose)
{
getMaxTime(nums,index+1,false,sum,maxHeap);
}else
{
getMaxTime(nums,index,false,sum,maxHeap);
getMaxTime(nums,index+1,true,sum+prices[index],maxHeap);
}
}
public int GetMaxTime(int [] nums)
{
PriorityQueue<Integer>maxHeap=new PriorityQueue<>(Collections.reverseOrder());
getMaxTime(nums,0,false,0,maxHeap);
return maxHeap.peek();
}

動態規劃求解;使用dp[i][0]表征不選擇該元素時的前i個元素的最大時間,dp[i][1]表征選擇該元素時前i個元素的最大利潤;

public int getMaxTime(int []nums)
{
int[][]dp=new int[nums.length][2];
dp[0][0]=0;
dp[0][1]=nums[0];
for(int i=1;i<nums.length;i++)
{
//若不選擇當前元素,則上一個元素可以選也可以不選
dp[i][0]=Math.max(dp[i-1][0],dp[i-1][1]);
//若選擇當前元素,則上一個元素只能不選,然后加入num[i]
dp[i][1]=dp[i-1][0]+num[i]
}
return Math.max(dp[nums.length][0],dp[nums.length][1]);}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212007.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212007.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212007.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

探索中文文本處理利器 - Python jieba庫詳解

更多資料獲取 &#x1f4da; 個人網站&#xff1a;ipengtao.com jieba庫介紹 在處理中文文本數據時&#xff0c;分詞是一項至關重要的任務。而在Python的工具箱中&#xff0c;jieba庫作為一款強大的中文分詞工具&#xff0c;為開發者提供了高效而靈活的解決方案。jieba&#…

JDK8新特性:Lambda表達式規則及用法,方法引用

目錄 Lambda表達式是JDK8新增的一種語法格式 1.作用 2.用法規則&#xff1a; 3.方法引用 Lambda表達式是JDK8新增的一種語法格式 1.作用 簡化匿名內部類的代碼寫法 Lambad用法前提&#xff1a;只能簡化函數式接口&#xff08;一般加有Funcationallnterface&#xff09;&a…

Python dateutil 庫:簡化日期和時間處理的利器

更多資料獲取 &#x1f4da; 個人網站&#xff1a;ipengtao.com 在Python中&#xff0c;處理日期和時間是常見的任務之一。dateutil庫是Python標準庫中datetime模塊的擴展&#xff0c;提供了許多方便的工具和函數&#xff0c;簡化了日期和時間的操作。 安裝與基本用法 首先&…

小黑子之——MybatiPlus整合

MybatiPlus學習 一、MybatiPlus簡介1.1 入門案例1.2 mybatisPlus概述1.3 總結 二、標準數據層開發2.1 標準的CRUD使用2.2 新增2.3 刪除2.4 修改2.5 根據Id查詢2.6 查詢全部2.7 Lombok2.8 分頁功能 三、DQL控制3.1 條件查詢方式3.1.1 構建條件查詢3.1.2 多條件查詢3.1.3 null值判…

運維05:自動化

人工運維時代 運維人員早期需要維護眾多的機器&#xff0c;因此需要執行很多重復的勞動&#xff0c;很多機器需要同時部署相同的服務或者是執行相同的命令&#xff0c;還得反復地登錄不同的機器&#xff0c;執行重復的動作 自動化運維時代 早期運維人員會結合ssh免密登錄&…

Java基礎——對象類型轉換(向上、向下轉型)

非繼承關系的類之間對象類型不可以互相類型轉換&#xff0c;只有繼承關系才可以互相轉換。 簡單說&#xff0c;對象類型轉換的前提要是繼承關系。 對象類型轉換分為&#xff1a;向上轉型和向下轉型。多態就是一種自動向上轉型。 向上轉型&#xff1a;子類對象用父類類型接收…

Leetcode 2963. Count the Number of Good Partitions

Leetcode 2963. Count the Number of Good Partitions 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;2963. Count the Number of Good Partitions 1. 解題思路 這一題根據題意&#xff0c;顯然我們可以將其先分為 n n n個原子partition&#xff0c;確保任意兩個partition之間…

git 常用的使用方法

1.查看分支 $ git branch #查看本地分支 $ git branch -r #查看遠程分支 $ git branch -a #查看所有分支 $ git branch -vv #查看本地分支及追蹤的分支 2.創建分支 方法1 $ git branch 分支名 #創建本地分支 #將本地分支push&#xff0c;就創建了遠程分支方法2 #創建本地分…

載入了名字空間‘htmltools’ 0.5.6,但需要的是>= 0.5.7解決方案

解決方案&#xff1a;刪除之前的舊版本安裝包&#xff0c;安裝新的包 1.卸載之前的安裝包 2.關閉R&#xff0c;重新打開 3. # install.packages("htmltools") library(htmltools)

Java 并發編程(一)

1、在 java 中守護線程和本地線程區別&#xff1f; java 中的線程分為兩種&#xff1a;守護線程&#xff08;Daemon&#xff09;和用戶線程&#xff08;User&#xff09; 任何線程都可以設置為守護線程和用戶線程&#xff0c;通過方法 Thread.setDaemon(boolon)&#xff1b;tru…

HarmonyOS學習--了解基本工程目錄

1.工程級目錄 工程的目錄結構如下&#xff1a; 其中詳細如下&#xff1a; AppScope中存放應用全局所需要的資源文件。entry是應用的主模塊&#xff0c;存放HarmonyOS應用的代碼、資源等。oh_modules是工程的依賴包&#xff0c;存放工程依賴的源文件。build-profile.json5是工…

如何找到MACOS系統更新的安裝包

首先在應用商店中下載新系統的安裝包&#xff0c;然后在設置中不要點安裝&#xff0c;會自動跳出安裝的界面&#xff0c;不要關閉界面&#xff0c;打開命令行用root權限輸入命令cat /var/log/install.log | grep *.dmg&#xff0c; 就會顯示 sh-3.2# cat /var/log/install.log …

算法基礎十

加一 給定一個由 整數 組成的 非空 數組所表示的非負整數&#xff0c;在該數的基礎上加一。最高位數字存放在數組的首位&#xff0c; 數組中每個元素只存儲單個數字。 示例 1&#xff1a; 輸入&#xff1a;digits [1,2,3] 輸出&#xff1a;[1,2,4] 解釋&#xff1a;輸入數組表…

YOLO_embedded: YOLO算法快速嵌入式部署

YOLO_embedded&#xff1a; YOLO算法快速嵌入式部署 for UbuntuBased on YOLOXOpenVINO & TensorRT 本項目提供c和python兩種語言&#xff0c;詳情請見各個文件夾下的README.md 安裝OpenVINO 點此進入官網選擇版本進行下載&#xff0c;然后打開install_openvino.sh將相…

ORACLE 19c 統一恢復處于ASM中的CDB含PDB數據文件到某一個文件目錄下面

NOCDB情況下&#xff0c;要把ASM中的文件恢復到文件系統&#xff0c;大家都知道分別設置每個文件的路徑即可&#xff0c;但如果是租戶環境&#xff0c;每個PDB都有不同路徑&#xff0c;而且每個PDB都有SYSTEM&#xff0c;SYSAUX等一些表空降&#xff0c;不可能放在同一個目錄中…

Linux_CentOS_7.9 VNC安裝卸載以及相關配置開機自啟動服務簡易記錄

VNC安裝卸載以及相關配置開機自啟動服務&#xff1a; 查看環境&#xff1a;&#xff08;yum鏡像源配置可以參考我之前文章里面有詳細參考http://t.csdnimg.cn/mzGoI&#xff09; [rootorcl238 ~]# rpm -qa | grep vnc ##查看系統現有VNC軟件版本 gtk-vnc2-0.7.0-3.el7.x86…

道可云元宇宙每日資訊|青島市元宇宙領域新產品推介暨產學研對接會舉行

道可云元宇宙每日簡報&#xff08;2023年12月7日&#xff09;訊&#xff0c;今日元宇宙新鮮事有&#xff1a; 青島市元宇宙領域新產品推介暨產學研對接會舉行 為加快推動青島市元宇宙技術和產業創新&#xff0c;引領下一代互聯網發展&#xff0c;青島市元宇宙領域新產品推介暨…

算法基礎九

螺旋矩陣2 給你一個正整數 n &#xff0c;生成一個包含 1 到 n2 所有元素&#xff0c;且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix。 示例 1&#xff1a; 輸入&#xff1a;n 3 輸出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]] 示例 2&#xff1a; 輸入&#xff1a;n …

第12節: Vue3 修飾符

如何在UniApp中使用Vue3框架使用修飾符&#xff1a; <template> <view> <button click"toggleVisibility ^ :disabledisDisabled">點擊切換顯示狀態</button> <text>{{ isVisible ? 顯示 : 隱藏 }}</text> </view> …

簡易加減運算器的制作----數字電路設計(含proteus仿真)

簡易加減運算器的制作 一、功能要求—基本功能 1、自制0-9按鍵&#xff0c;在一個LED數碼管上穩定地顯示當前按下的值。&#xff08;基本功能&#xff09; 2、增加、兩個按鍵&#xff0c;實現0-9兩個一位數的加法運算&#xff0c;同時在兩位LED上穩定地顯示運算結果。&#…