摘要:應(yīng)用分治法是一種很重要的算法。字面上的解釋是分而治之,就是把一個(gè)復(fù)雜的問題分成兩個(gè)或更多的相同或相似的子問題,再把子問題分成更小的子問題直到最后子問題可以簡(jiǎn)單的直接求解,原問題的解即子問題的解的合并。
分治法是一種很重要的算法。字面上的解釋是“分而治之”,就是把一個(gè)復(fù)雜的問題分成兩個(gè)或更多的相同或相似的子問題,再把子問題分成更小的子問題…直到最后子問題可以簡(jiǎn)單的直接求解,原問題的解即子問題的解的合并。
這個(gè)技巧是很多高效算法的基礎(chǔ),如排序算法(快速排序,歸并排序),二分查找,傅立葉變換(快速傅立葉變換),漢諾塔問題
public static void main(String[] args) { int[] arr = {1,1,2,2,33}; hanoiTower(3,"A","B","C"); }public static void hanoiTower(int num,char a,char b,char c){ if (num == 1){ System.out.println("將第1個(gè)盤從"+ a +"移動(dòng)到" + c); }else { //將上面的盤從a移動(dòng)到c,移動(dòng)過程中會(huì)經(jīng)過b hanoiTower(num - 1,a,c,b); //將最下面的盤從a移動(dòng)到c System.out.println("將第"+ num +"個(gè)盤從" + a + "移動(dòng)到" + c); //將B塔的所有盤從b移動(dòng)到c 移動(dòng)過程會(huì)用到a hanoiTower(num - 1,b,a,c); }}
結(jié)果
將第1個(gè)盤從A移動(dòng)到C將第2個(gè)盤從A移動(dòng)到B將第1個(gè)盤從C移動(dòng)到B將第3個(gè)盤從A移動(dòng)到C將第1個(gè)盤從B移動(dòng)到A將第2個(gè)盤從B移動(dòng)到C將第1個(gè)盤從A移動(dòng)到C
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/120964.html
摘要:程序員小吳打算使用動(dòng)畫的形式來幫助理解遞歸,然后通過遞歸的概念延伸至理解動(dòng)態(tài)規(guī)劃算法思想。因此,分治策略一般用來解決子問題相互對(duì)立的問題,稱為標(biāo)準(zhǔn)分治,而動(dòng)態(tài)規(guī)劃用來解決子問題重疊的問題。難點(diǎn)就在于找出動(dòng)態(tài)規(guī)劃中的這三個(gè)概念。 在學(xué)習(xí)「數(shù)據(jù)結(jié)構(gòu)和算法」的過程中,因?yàn)槿肆?xí)慣了平鋪直敘的思維方式,所以「遞歸」與「動(dòng)態(tài)規(guī)劃」這種帶循環(huán)概念(繞來繞去)的往往是相對(duì)比較難以理解的兩個(gè)抽象知識(shí)點(diǎn)。...
摘要:漢諾塔問題有三根柱子,源桿,暫存桿,目的桿上有層盤子,由小到大向下排列,現(xiàn)需要將桿的盤子移到桿中要求大的盤在下面,小的盤在上面一次只能移動(dòng)一個(gè)盤子個(gè)人思路先分析問題,用數(shù)學(xué)的歸納法當(dāng)只有一個(gè)盤時(shí),直接移動(dòng)當(dāng)有兩個(gè)盤時(shí),先將小的移到暫存桿,再 漢諾塔問題: 有三根柱子,源桿A,暫存桿temp,目的桿C A上有n層盤子,由小到大向下排列,現(xiàn)需要將A桿的盤子移到C桿中 ...
摘要:學(xué)編程,學(xué),算法也是必不可缺的,這一次給大家?guī)硪粋€(gè)經(jīng)典的遞歸算法題,漢諾塔。當(dāng)我們把層都搬到了中間柱的時(shí)候,只需要把最大的那個(gè)盤,從搬到柱就好了,剩下的怎么辦呢柱永遠(yuǎn)是目標(biāo)柱,我們不需要去移動(dòng)它。 學(xué)編程,學(xué)IT,算法也是必不可缺的,這一次給大家?guī)硪粋€(gè)經(jīng)典的遞歸算法題,漢諾塔。算是算法的入門小題目之一吧~ 視頻教程 什么是漢諾塔? 我這里直接拉來一個(gè)圖解釋一下(掛了請(qǐng)聯(lián)系我)sho...
閱讀 1207·2021-11-16 11:42
閱讀 2993·2021-10-12 10:18
閱讀 2927·2021-09-24 09:48
閱讀 3577·2019-08-30 15:56
閱讀 1614·2019-08-30 14:17
閱讀 3117·2019-08-29 12:14
閱讀 991·2019-08-27 10:51
閱讀 2102·2019-08-26 13:28