圓排列問題

2022-09-02 10:15:12 字數 704 閱讀 3822

問題描述:

給定n個大小不等的圓 c1 c2 c3 c4 要將n個圓排進乙個矩形框中,且要求底邊相切。找出有最小長度的圓排列。

例如:當n=3,且所給的3個圓半徑分別為1,1,2時,這3個圓的最小長度的圓排列 最小長度為2+4根號2.

演算法設計:

設開始的a =【r1,r2,r3,r4...rn】是所給的n歌圓半徑。

circleperm(n,a)返回最小長度。

center計算當前選擇的圓中心的橫座標。

compute計算當前圓排列的長度。

陣列r當前圓排列。

演算法描述:

#include #include #include #include using namespace std;

class circle;

float circle::center(int t)

return temp;

}void circle::compute(void)

if(high-low < min)

min = high-low;

}void circle::backtrack(int t)

cout<

圓排列問題

給定n個大小不等的圓 c1,c2,cn,現要將這 n個圓排進乙個矩形框中,且要求各圓與矩形框的底邊相切。圓排列問題要求從 n個圓的所有排列中找出有最小長度的圓排列。例如,當 n 3,且所給的 3個圓的半徑分別為1,1,2時,這 3個圓的最小長度的圓排列如圖所示。其最小長度為 2 4 2 void c...

圓排列問題

給定n個大小不等的圓c1,c2,cn,現要將這n個圓排進乙個矩形框中,且要求各圓與矩形框的底邊相切。圓排列問題要求從n個圓的所有排列中找出有最小長度的圓排列。例如,當n 3,且所給的3個圓的半徑分別為1,1,2時,這3個圓的最小長度的圓排列如圖所示。其最小長度為2 4 2。上述演算法尚有許多改進的餘...

圓排列問題

圓排列問題 給定n個圓的半徑序列,將它們放到矩形框中,各圓與矩形底邊相切,求具有最小排列長度的圓排列。圓的擺放位置不同 先後順序不同 得到的結果可能不同,所以這是乙個排列問題,在回溯裡面需要新增全排列的 要得到圓排列的長度,我們需要知道最右邊圓心的橫座標,它的半徑 第乙個圓的半徑 根據演算法的約定,...