第乙個圓的圓心橫座標為0
定義x(k)陣列算出排列第k個圓的圓心橫座標
minlen為最短的矩形的長度if(centerx+r[t]+r[1]求圓心橫座標:
double center(int t)
}return temp;
//排列第乙個的圓的圓心橫座標是0
}回溯演算法:
void backtrack(int t)
else
swap(r[t],r[j]);}}
}求矩陣的最短長度:
void compute()
if (x[i] + r[i] > high)
}if (high - low < minlen) }}
backtrack函式需要o(n!)的時間複雜度,計算當前圓排列長度需要從頭遍歷到尾,需要o(n)計算時間,從而整個演算法的時間複雜度為o((n+1)!)
《演算法分析與設計》大作業 圓排列問題(回溯法)
目錄 知識點1.問題 2.解析 3.設計 4.分析 5.原始碼 1.回溯法摘自 中琦2513 的原創文章 1 概念 回溯演算法實際上乙個類似列舉的搜尋嘗試過程,主要是在搜尋嘗試過程中尋找問題的解,當發現已不滿足求解條件時,就 回溯 返回,嘗試別的路徑。回溯法是一種選優搜尋法,按選優條件向前搜尋,以達...
演算法大作業 圓排列問題
圓排列問題 給定n個圓的半徑序列,將它們放到矩形框中,各圓與矩形底邊相切,求具有最小排列長度的圓排列。首先舉乙個例子,當給定的圓半徑為1,1,3時則可以給出如下排列使排列長度最小 所以這題也算是乙個排列問題,如何排列能夠使排列的長度最小。在排列時有以下幾種情況 1 每個圓相繼相切 如上面的例子裡每個...
演算法大作業 圓排列問題
給定n個大小不等的圓c1,c2,cn,現要將這n個圓排進乙個矩形框中,且要求各圓與矩形框的底邊相切。圓排列問題要求從n個圓的所有排列中找出有最小長度的圓排列。例如,當n 3,且所給的3個圓的半徑分別為1,1,2時,這3個圓的最小長度的圓排列如圖所示。其最小長度為。圓排列問題的解空間是一棵排列樹,按照...