1. 程式人生 > >Coder,夢到了夢

Coder,夢到了夢

1,問題:有一個含有N個整型資料的陣列,將這個陣列中的元素分為2堆,使得2堆資料的和之差最小。

最初看到這個題目,第一反應是循序遍歷陣列,加之,(有點貪心演算法的味道),後思不可解。

於是繼續探索,將這個問題 轉換一下,可知 實際上可以轉換為 求解 一個集合的子集問題:

因為 一個數組中所有的N個元素, 用一種方法取走m<=N個元素 , 那麼剩下的N-m個元素自然就屬於剩下的一堆。

由   劃分成兩堆資料  => 取出一些元素 ,並且 附加條件就是 取出的所有元素之和sum1 趨向於 陣列所有元素之和 sum 的一半。

2,全排列的遞迴演算法解決:

package net.mldream.algorithm.pr ;

public class Pr01 {

	public static void swap(int[] num, int a, int b) {
		int temp = num[a] ;
		num[a] = num[b] ;
		num[b] = temp ;
	}
	public static void printArray(int[] num,int low, int n) {
		for(int i=low;i<=n;i++) {
			System.out.print(num[i]+" + ") ;
		}
	}

	public static void getAll(int[] num, int low, int high) {
		//printArray(num,low,high) ;
		if(low > high) {
			for(int i = 0; i <= high; i++)             
            System.out.print(num[i]);         
        System.out.println("");  
		} else {
			for(int i=low;i<=high;i++) {
				swap(num,low,i) ;
				
				//System.out.println("num[0]:"+num[0]+" low:" +low+" high:"+high) ;
				getAll(num,low+1,high) ;
				swap(num,low,i) ;
			}
		}
	}

	public static void main(String[] args) {
		int[] num = {1,2,3} ;
		getAll(num,0,2) ;
		//printArray(num, 5) ;
	}
}

但是遞迴畢竟是一種效率上不佔優的演算法。

感興趣的猿們可以 自己嘗試一些更優解。或是給出一種方案 解決 一類 問題。這應該會是件 有意思的事情吧?!

相關推薦

Coder

1,問題:有一個含有N個整型資料的陣列,將這個陣列中的元素分為2堆,使得2堆資料的和之差最小。 最初看到這個題目,第一反應是循序遍歷陣列,加之,(有點貪心演算法的味道),後思不可解。 於是繼續探索,將這個問題 轉換一下,可知 實際上可以轉換為 求解 一個集合的子集問題:

紅樓裏賈母三次身體不適隱藏三個不為人知的秘密

最有 自帶 什麽 我們 http 技術 第一個 通過 一點 劉姥姥二進榮國府時,賈母問她多大了,劉姥姥都一一回答,兩個老人家有一段對話特別有意思,原文如下: 賈母道:“老親家,你今年多大年紀了?”劉姥姥忙立身答道:“我今年七十五了。”賈母向眾人道:“這麽大年紀了,還這麽健

Microsoft釋出Xbox OneSteve Jobs的一個

現在我們可以看到一件和Steve Jobs夢想非常契合的裝置.就像他想象的那樣,這個機器可以變成客廳的hub,它能夠玩video games,能夠播放Blu-ray discs,也能夠看電視,還可以上網做任何事情。關鍵還要可以在這些功能之間無縫的切換–它不在需要任何按鈕。它只需要一個非常簡單得超乎想象的使用

不願意按部就班他個人成立企業實現自己的創業

楊世平,大學畢業後,他在紡織廠中從事過工程師、廠長助理等領導層工作,“那時候的工作比較枯燥,一切都是按部就班。”經過幾年單調乏味的工作,1998年楊世平感受到市場的活力,他認為這是個人成立企業的好時機,於是就從事業單位走出來,選擇下海經商。 “那時候沒什麼資金,都是靠自己的技術,桶金我賺了

小妖精的完美遊戲教室——東方PROJECT同人th12靈A

ant static use game del null mon tor lec   ╮(╯▽╰)╭沒辦法,小妖精Balous也很討厭學院化的教育呀,一點意義都沒有。   這次就上傳東方地靈殿靈夢A邏輯部分的核心代碼吧,估計連老師都看不懂。動畫部分的代碼就不放上來了。

陳曉旭的一生:童年膽怯內向演紅樓一夜成名做生意身價過億

-i 過程 鼓勵 小提琴 一件事 報道 nbsp 做到 進行 一直想做一個曉旭的專輯,講述更多關於曉旭的生平,以及她與紅樓夢的故事,分享給更多旭迷和紅迷,但因之前陸陸續續寫過許多,在我之前的文章裏都能找到,這裏就不再重復,今天分享一下曉旭人生各個時期的一些小故事。

大資料教你實現預測未來這不是

隨著資料探勘與人工智慧技術的發展,越來越多的企業將大資料運用到生產實踐與決策指導中

浙江萬里阿里雲大資料應用學院企業課堂走進“數工場”

        為了提升同學們對行業發展與所學專業的認知,增強同學們的職業生涯規劃意識,激發同學們的專業學習熱情。2018年12月27日,在阿里雲大學的聯絡安排下,浙江萬里學院阿里雲大資料應用學院金冉老師、慧科集團浙江校區品質保障及就業主管葉露老師以及駐校班主任李波

我的ACM我的!!!

差分約束系統 一、何為差分約束系統: 差分約束系統(system of difference constraints),是求解關於一組變數的特殊不等式組之方法。如果一個系統由n個變數和m個約束條件組成,其中每個約束條件形如xj-xi<=bk(i,j∈[1,n],k∈

都是 htmlspecialchars的錯解決 織cms dedecms 標題不能為空 不支援php5.3 php5.4 php5.5版本

article_add.php  101行 $title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen)); 改成 $title = htmlspecialchars(cn_substrR($title

飲酒者旦而哭泣;哭泣者旦而田獵。方其不知其也。 ------莊子.齊物論-節選

麗之姬,艾封人之子也。晉國之始得之也,涕泣沾襟,及其至於王所,與王同筐床,食芻豢,而後悔其泣也。 予惡乎知夫死者不悔其始之蘄生乎 夢飲酒者,旦而哭泣;夢哭泣者,旦而田獵。方其夢也,不知其夢也。夢之中又佔其夢焉, 覺而後知其夢也。且有大覺而後知此其大夢也,而愚者自以為覺

【轉】PHP開發經驗之談受益非淺

his 則表達式 處理 手冊 調用 緩存系統 字符串操作函數 如果能 諸多 用單引號代替雙引號來包含字符串,這樣做會更快一些。因為PHP會在雙引號包圍的字符串中搜尋變量,單引號則不會,註意:只有echo能這麽做,它是一種可以把多個字符串當作參數的“函數”(譯註:PHP手冊中

AngularJS單頁面路由配置恩理解就很簡單啦

gif htm con function ner 創建 app 插入 樣式 利用route實現單頁面跳轉功能 利用angularJS開發流程 1)配置好angularJS開發環境 2)利用 yo angular projectname創建項目目錄 3)刪除

想要對HTML5有深入必須解這些

設備 能夠 地理定位 target 學習 pro program 網絡存儲 並且 你想要創建動態的、交互的、富數據的、保持連接的網頁。等等,網頁?為什麽不直接使用HMTL5來創建成熟的web應用?還有,為什麽不使用那些現代技術來實現,它們早在支持移動設備的時候就已經支持你的

幫助方老師使用固態硬盤安裝win10150軟妹幣(但是他賴賬!)

說明 pre 更改 計算 軟件工程 記得 重裝系統 32位 網站   作為一個計算機專業的,具體點是軟件工程,每次別人問自己是幹啥的,總會被帶入到對方的節奏:哦,能裝系統,會修電腦。。。   今天方老師(一起工作了4年多的曾經是個真正的老濕!搞藝術的!已經提了離職報告了,不

分析100萬個搜索結果驗證16個SEO優化的核心影響因素

百度 搜索引擎 谷歌 seo優化 搜索結果 盡管這篇文章分析的是谷歌,但是很多對於其他搜索引擎也同樣受用,不得不說的是在搜索技術上百度與谷歌的距離還是很遠,可能方向都放到賺錢去了吧,OK,讓我們開始吧!我們分析了100萬個搜索結果(SERP)來回的一下這個問題:究竟哪些因素是與搜索引擎在首

Sublime Text 3Anaconda就會如虎添翼

-h text 最有 tin 下載地址 cond sage efault 文檔 作為Python開發環境的Sublime Text 3,有了Anaconda就會如虎添翼。Anaconda是目前最流行也是最有威力的Python代碼提示插件。 操作步驟 1.打開packag

好吧我承認我喜歡這種多個 StoryBoard 組織的方式學習

又一 mat ted tableview right sel 例如 簡單的 簡單 下面轉載內容非常不錯。興許補充從官方文檔疏理出來的脈絡,確實非常好的使用方法。tid-270505.html">tid-270505.html">Storyboard 跳轉 和 傳值

Swift學習的第一個demo講解一些常用的知識點

tar 回車 override 新的 屬性 知識 常用 let 生命周期 /** 1. OC [UIView alloc] initWithXXX:] Swift UIView(XXX:) 類名() == alloc / init 等價 2. 類

4、看一些代碼更新的規劃從全局著手

python讓編程變得好玩——至少對我來說是這樣。只有感到編程是有趣的時候,才容易富有成效。好玩的編程(Playful Programming)是我發明的詞,是極限編程(Extreme Programming,亦稱XP)的非極限版本。XP的大多數點子我都喜歡,但是我太懶了,不能完全遵守它的原則。所以現在挑了一