尋找固定的和----2013年2月26日

     問題描述:有兩個數組x[]與y[],各有m與n個元素,而且各個元素沒有依順序排列;d是一個已知的值。請寫一個程序,看看在x[]與y[]中有沒有滿足x[i]+y[j]=d的元素。例如,若x[]爲3,7,2,4,y[]爲1,5,2,3,d爲9;那麼x[1]+y[2]與x[3]+y[1]都合乎條件,也即都是9。
     思路:x[i]+y[j]=d。那麼x[i]=d-y[j]了。將x[]數組按從小到大的順序排序好,再用二分查找法在x[]中查找d-y[j]。這是比較簡單的方法。但是這種方法比較不容易想到,因爲這個問題給出的隱性思路是在x[]與y[]這兩個數組中查找,而這種二分查找法是將2個查找轉化成了一個查找。
     代碼比較簡單,用一種比較高效的排序算法進行排序,再用二分查找法就可以了。代碼略。
     參考資料:《C語言精選名題百則技巧篇》
     如果你覺得我的文章對你有幫助,請贊一下,非常感謝!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章