贪心算法——选择不相交区间问题
生活随笔
收集整理的這篇文章主要介紹了
贪心算法——选择不相交区间问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述:設有n個活動的集合,其中每個活動都要求使用同一個資源,而在同一時間內只有一個活動能夠使用這一資源,每個活動i都有一個要求使用該資源的起始時間si和一個結束時間fi(si<fi),如果選擇了活動i,則他在時間區間[si,fi)占用資源。求最多可以進行多少個活動。
【輸入格式】第一行一個正整數n(n<1000),接下來n行,每行兩個整數si和fi
【輸出格式】輸出盡可能多的相互兼容的活動個數
貪心策略:首先需要以每個活動的結束時間為基準排序(很多問題都需要排序,我們只能在有序中確定策略,凌亂的數據中確定策略顯然是夢話。對于這個問題有兩個可能的基準:開始時間和結束時間,然后再選擇思考順序:從前往后和從后往前),這里我們選擇從前往后思考(至于為什么是這樣只能說在思考問題的過程中試出來這樣可以解決問題)。
然后從前往后選擇活動,如果不沖突就選上。
正確性:對于兩個沖突的活動,選擇前面的更優:前面的結束時間更早,對后面的影響更小。
對于兩個不沖突活動,就選上,活動數更多。
綜上:策略正確
代碼:
總結
以上是生活随笔為你收集整理的贪心算法——选择不相交区间问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux lnmp 虚拟主机配置成功后
- 下一篇: 深度搜索剪枝——数的划分