程式設計之美 數字的魅力 和為定值的數

2021-07-25 15:25:26 字數 404 閱讀 7033

1.和為定值的兩個數:

輸入乙個陣列和乙個數字,在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。

思路:(1)窮舉,遍歷計算兩個數的和,看看是否跟給定的值相等o(n*n)

(2)先排序o(n*logn) ,然後s1 = sum -s2,看s1是否在陣列中,這裡用二分查詢這裡也是o(n*logn)

(3)  先排序o(n*logn),然後兩個變數i,j代表開始和結束的index,比和sum大就j--,比sum小i++

2.和為定值的多個數:

思路:

(1) 首先想到的動態規劃,01揹包嘛。

好久沒看過了思路了,又去翻了dd大大的揹包九講

尋找和為定值的數

尋找和為定值的兩個數 include using namespace std include 排序夾逼 時間複雜度為o nlogn n o nlogn 空間複雜度 o 1 void twosum int a,unsigned int length,int sum else void funtest ...

《程式設計之法》 尋找和為定值的多個數

輸入兩個整數n和sum,要求從數列1,2,3,n中隨意取出幾個數,使得它們的和等於sum,請將其中所有的可能的組合列出來。這是個01揹包問題。考慮是否取第n個數的策略,問題可以轉化為乙個只與前n 1個數相關的問題,也就是 1 如果取第n個數,那麼問題就轉化為 取前n 1個數使得它們的和為sum n ...

《程式設計之法》2 2尋找和為定值的兩個數

題目描述 輸入乙個整數陣列和乙個整數,在陣列中查詢一對數,滿足它們的和正好等於輸入的那個整數,並輸出任一一對值。解法一 直接窮舉 雙層迴圈,複雜度為o n 2 include using namespace std void directenum int nums,int n,int len if ...