實踐題目名稱:派
問題描述:給定兩個整數n和f,分別代表派的數量,f+1表示需要分得派的人數。隨後給出每個派的體積,要求每人分得的派體積相同,且分得的派只能來自乙個派,求每人所能分得的最大派的體積。
演算法描述:我們可以得知分得的派體積在(0,最大派體積]之間,因此,我們可以採用二分法一步步找到最優的答案。如果中間的體積是存在的派裡能分得的,我們就可以把體積範圍縮小到右半部分,如果不滿足條件,就可以把範圍縮小到左半部分,直到體積範圍小於1e5,此時的體積便能滿足最終條件。
演算法時間及空間複雜度分析(要有分析過程)
演算法時間複雜度:輸入是o(n),二分搜尋是n(logn),fly函式是n,所以演算法的時間複雜度是o(n)。
演算法空間複雜度:因為**裡除了已有的空間存在,沒有新增的所需空間,因此空間複雜度為o(1)。
5.心得體會(對本次實踐收穫及疑惑進行總結):在這道題目裡,我沒有想到使用二分演算法進行求解,因此只能檢視題解。得知在某個區間求特定值的問題可以用二分演算法來做,也算是一大收穫。
演算法第二章上機實踐報告
實踐題目名稱 找第k個小的數 問題描述 設計乙個平均時間為o n 的演算法,在n 1 n 1000 個無序的整數中找出第k小的數。演算法描述 就是先假設a left 為這個分界值x,然後排序。比較x是不是第k個如果是,返回這個值。如果不是比較一下x和a k 的大小,如果xa k 遞迴在x的右邊找 演...
演算法第二章上機實踐報告
7 1 最大子列和問題 20分 給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試資...
演算法第二章上機實踐報告
1,實踐題目名稱 最大子列和問題 給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試...