1. 程式人生 > >第四章實驗作業

第四章實驗作業

復雜度分析 進行 一個 其它 貪心算法 可能 分析 strong 設有

  1. 實踐題目

  設有n個程序{1,2,…, n }要存放在長度為L的磁帶上。程序i存放在磁帶上的長度是 li,1≤i≤n。 程序存儲問題要求確定這n 個程序在磁帶上的一個存儲方案, 使得能夠在磁帶上存儲盡可能多的程序。 對於給定的n個程序存放在磁帶上的長度,計算磁帶上最多可以存儲的程序數。

  1. 問題描述

  每次都從最小的開始加入,顯然可以求出最終的值,我們對題目進行貪心求解。

  1. 算法描述

  滿足貪心算法,對程序長度從小到大排序,每次選擇最短的程序存放在磁帶上,直到已經放了的程序長度總和是小於或者等於L的最大值,以此找出最終的程序數。

sort(a, a+n);
for
(int i = 0; i<n; i++){ sum = sum+a[i]; if(sum>n){ break; } count++; }

  1. 算法時間及空間復雜度分析(要有分析過程)

  空間復雜度為O(1),沒有開辟其它的輔助空間。

  時間復雜度為O(n),排序時間為n,放程序到磁帶的時間為n,所以時間復雜度為O(n);

  1. 心得體會(對本次實踐收獲及疑惑進行總結)

  這一題不是很難,主要是對貪心的基本操作和應用,兩個人思路不約而同。

第四章實驗作業