演算法第四章實踐報告

2022-09-10 02:39:12 字數 585 閱讀 9197

刪數問題

給定n位正整數a,去掉其中任意k≤n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。如果數字最前面有0不輸出

貪心演算法的性質:

貪心策略:盡量刪除高位的大的數字即尋找單調遞減的第乙個數然後刪除,若是一直單調遞增則刪除單調遞增的最後乙個數

用字元陣列來存n位正整數a,通過while迴圈刪除k個符合要求使得剩餘數組成新數最小。像貪心策略那樣尋找單調遞減的第乙個數,找到後刪除,後面的數前移;如果找到最後乙個數也沒找到即說明是一直單調遞增的,則刪除最後乙個。最後輸出組成的新數,如果開頭是0則不輸出,直到不為0的數,記下下標,從該下標開始輸出

主要演算法放在兩層迴圈中,第一層while迴圈一定迴圈k次,第二層for迴圈最壞情況迴圈n次

即該演算法的最終的時間複雜度t(n) = o(k * n) = o(n)

可以運用貪心演算法解決的問題即滿足貪心演算法兩個性質的問題

運用貪心演算法解決問題的基本思想

首先選擇某種貪心策略,根據策略做出當前狀態的最優選擇,然後問題演化成與原問題相同的規模更小的子問題,最後用相同的策略求解子問題得到最終解

演算法第四章實踐報告

1.實踐題目名稱 4 1 程式儲存問題 2.問題描述 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數...

演算法第四章實踐報告

1.1問題描述 刪數問題 給定n位正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n位正整數a和正整數 k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。如果數字最前面有0不輸出。輸入格式 第 1 行是1 個正整數 a。第 2 行是正整數k。輸出格式...

第四章實踐報告

7 1最優合併問題 1.問題描述 給定k 個排好序的序列,用 2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的 2 路合併演算法合併 2 個長度分別為m和n的序列需要m n 1 次比較。試設 計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。為了進行比較,還需要確定合併這...