1.請選擇實驗課題目說明你的演算法滿足貪心選擇性質,並給出時間複雜度分析。
實驗題目:刪數問題
給定n位正整數a,去掉其中任意k≤n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。如果數字最前面有0不輸出。
貪心策略:
如178543,刪去4個數,獲得個兩位數。要想這個兩位數是最小的方案,首先要滿足該兩位數的十位選擇的是可選擇中的最小數即可,如果選擇的是最後一位數字,在此之後便沒有其他數字可滿足組合為兩位數,故我們要在這六位數字中從前五位中確認十位數,同理,獲取三位數需要在最後兩位前篩選最優百位數。定義首尾指標,表示查詢當前位數的範圍,首指標從0開始,在不斷更新位數的過程中更新為找到數的後一位,尾指標指向s.length()減保留位數。
時間複雜度:
最好情況:o(n)
最壞情況:o(nlogn)
2.你對貪心演算法的理解。
貪心演算法就是每一步都選擇最優的方案,組合成的結果就是最優的結果。這個演算法思想能幫助我們輕鬆解決大部分問題,但不代表所有的問題都能用貪心演算法解決,並不是每一步最優組成的就是最優的答案。生活中,我們做的事情結果不一定會是最好的,但只要我們每一步都走的最好,那麼結果不至於會差。
演算法第四章上機實驗報告
實踐題目名稱 最優合併問題 問題描述 給定k 個排好序的序列,用 2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m n 1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。為了進行比較,還需要確定合...
演算法第四章上機實驗報告
題目 最優合併問題 1.問題描述 給定k 個排好序的序列,用 2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m n 1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。為了進行比較,還需要確定合併這...
演算法第四章上機實驗報告
4 1 程式儲存問題 40 分 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。第一行是2 個正整數...