演算法設計與分析 貪心演算法(二)

2021-10-08 08:33:32 字數 1162 閱讀 3308

設有n個正整數,將它們連線成一排,組成乙個最大的多位整數。

例如:n=3時,3個整數13,312,343,連成的最大整數為34331213。

又如:n=4時,4個整數7,13,4,246,連成的最大整數為7424613。

輸入是n個正整數,輸出是這n個正整數連成的最大多位整數,要求用貪心法求解該問題。答案要求包含以下內容:(1)證明問題具有貪心選擇性;(2)證明問題具有優化子結構;(3)寫出演算法偽**並分析演算法的時間複雜度。

首先考慮每次選擇最高位最大的數,如果相等則比較次高位,在室友的提醒下,發現這個方法存在問題。例如987和98.

故修改為:對m位的數字a和n位的數字b,比較a*10 ^ (n-1)+b和b *10^(m-1)+a

bool campare

(string i, string j)

sort

(tmp.

begin()

, tmp.

end(

), campare)

;// campare為假時交換i 和 j

存放於磁帶上檔案需要順序訪問。故假設磁帶上依次儲存了n個長度分別是l[1],….,l[n]的檔案,則訪問第k個檔案的代價為

。現給定n個檔案的長度l[1],….,l[n],並假設每個檔案被訪問的概率相等,試設計乙個演算法輸出這n個檔案在磁帶上的儲存順序使得平均訪問代價最小。。答案要求包含以下內容:(1)證明問題具有貪心選擇性;(2)證明問題具有優化子結構;(3)給出演算法並分析演算法的時間複雜度。

儲存方式:長度最短的存在最前面。

g=(v, e)是乙個具有n個頂點m條邊的連通圖,且可以假設邊的代價為正且各不相同,設,定義t的瓶頸邊是t中代價最大的邊,g的乙個生成樹t是一棵最小瓶頸生成樹,如果不存在g的生成樹t』是的它具有代價更小的瓶頸邊。問:(1)g的每棵最小瓶頸樹一定是g的一棵生成樹嗎?證明或者給出反例; (2) g的每棵生成樹都是g的最小瓶頸樹嗎?證明或者給出反例。

(1)是

(2)不是

給定n個自然數d1, d2, …, dn, 設計演算法,在多項式時間確定是否存在乙個無向圖g,使它的結點度數準確地就是d1, d2, …, dn, 要求g中在任意兩個結點之間至多有一條邊,且不存在乙個結點到自身的邊。

演算法設計與分析 貪心演算法

time limit 1000 ms memory limit 65536 kib problem description 一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。並證明演算法能產生乙個最優解。對於給定的n和k個加油站位...

演算法設計與分析 貪心演算法

分解 將原問題求解過程劃分為連續的若干個決策階段 決策 在每乙個階段依據貪心策略進行貪心決策,得到區域性的最優解,並縮小待求解問題的規模 合併 將各個階段的區域性解合併為原問題的乙個全域性最優解 greedy c c是問題的輸入集合即候選集合 初始解集合為空集 while not solution ...

演算法設計與分析 貪心演算法

所謂貪心演算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的僅是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,但對範圍相當廣泛的許多問題他能產生整體最優解或者是整體最優解的近似解。貪心演算法的基本思路如下 1.建立數學模型...