日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数组分割问题——另一种方法

發布時間:2024/9/30 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数组分割问题——另一种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://blog.csdn.net/lengzijian/article/details/7842551

還需要驗證

最近一直看編程之美,想法真的很重要,今天發這篇文章還是有一點不自信,希望碰到志同道合的同學一起討論下!

?


?

題目:

有一個無序、元素個數為2n的正整數數組,要求:如何能吧這個數組分割為元素個數為n的兩個數組,并使兩個子數組的和最近?

例如有如下數組如圖:

?

第一行:源數組

第二行:目的數組

書中講了很多方法,這里就不在贅述了,我的方法也很簡單,相信很多人也想到了,但是沒有辦法證明這個方法的可靠性。今天我們主要講下,該方法的可靠性

?

先來說下方法:

1.????首先對無序數組進行排序(時間復雜度nlogn)

2.????從當前源數組中取最大的元素,放置到一個和最小的目的數組(起初都為0,故可以隨意放置),同時這個最大元組從源數組中刪除。

3.????重復第2步,直到源數組個數為0

?

按照如上方法:上題的到的結果為:

?

左邊和為43,右邊為44。符合題意。

?

很多人第一感覺就是,①題目不會這么簡單,②這種解法可能會有漏洞,下面對該種解法,做一下個人的理解。

?

1.????我把這種問題看作是往天平上放籌碼,放到最后的要求是天平兩端的差異最小;

2.????先把要放的籌碼都排好序;

3.????先放置最大籌碼到天平的任意一段(起初天平是平衡的)

4.????放置第二塊籌碼到天平籌碼重量輕的一段;

5.????放置第三塊籌碼到天平籌碼輕的一段(一定是和第二塊一起)。這時,有兩種可能:①:天平沒有動,此時應按照規則繼續放下一塊;②天平平衡有變化(包括兩邊平衡和逆變化),我們可以確定的是,此時此刻天平兩邊的籌碼重量差一定小于等于剛剛放上的籌碼(目前天平上最輕的籌碼)

6.????按照上面的方法,放到最后一塊后,如果天平平衡是有變化的,我們可以保證天平量變的差值永遠小于等于所有籌碼最小的一個。當沒有變化是,也可以保證我們的結果是正確的(自己考慮下)

?

目前我能想到的只有這些,根據上面的規則時間復雜度應該為nlogn(排序)+n = O(nlogn)

?


總結

以上是生活随笔為你收集整理的数组分割问题——另一种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。