Re: [問題] 請問隨機陣列
: http://www.wretch.cc/album/show.php?i=flyingcop&b=9&f=1707840476&p=0
猜是 AI. algorithm 解 完全連通型tsp 問題,
若真想求知,請先敘述你要做的動作,
及資料儲存之方式,以下為臆測,程式碼恕刪,請對照看。
for(i=0; i<City; ++i){
order=1; /* 這裡建議設 0 ,以後比較方便 */
for(ii=0;ii<City; ++ii) /* 計算第 i 個程式座標序 */
if(i!=ii && S.Coord[ii]<S.Coord[i]) ++order;
t[i]=order; /* 設定第 i 個 city 之座標序 */
}
這段碼只是很簡單的比較、排序,但用到的應是 Counting Sort,
t 裡面是放 城市的編號, S 裡面放的是第 ii 個程式的座標位置,都是 array。
而排序的原則是:去計算有幾個座標比 S.Coord[i] 還要小,
便可知 t[i] 從左邊掃到右邊,是第幾個 city。
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.78.41
推
07/28 18:52, , 1F
07/28 18:52, 1F
→
07/28 18:54, , 2F
07/28 18:54, 2F
問題簡化一下,假設一串數列是 int coord[5]={2,3,1,4,5};
coord[i] 代表第 i 個 city 之座標
再分配一個 int rank[5], rank[i] 代表第 i 個程式,從左掃到右,會是第幾個掃到。
rank[0]=1 ---> 因 coord[0]=2, 是第1小的數;
rank[1]=2 ---> 因 coord[1]=3, 是第2小的數;
rank[2]=0----> 因 coord[2]=1, 是第0小的數;
依此類推,而 order 就是要算 rand[i] = ???? ( ???? 也就是 order)
在程式碼中,後期要得知第 x 小的程式座標的話 :
int tmp_coord = coord[rand[x]];
※ 編輯: tropical72 來自: 180.177.78.41 (07/28 19:08)
推
07/28 19:06, , 3F
07/28 19:06, 3F
→
07/28 19:10, , 4F
07/28 19:10, 4F
→
07/28 19:10, , 5F
07/28 19:10, 5F
→
07/28 19:11, , 6F
07/28 19:11, 6F
※ 編輯: tropical72 來自: 180.177.78.41 (07/28 19:12)
推
07/28 19:14, , 7F
07/28 19:14, 7F
→
07/28 19:16, , 8F
07/28 19:16, 8F
→
07/28 19:17, , 9F
07/28 19:17, 9F
→
07/28 19:17, , 10F
07/28 19:17, 10F
→
07/28 19:17, , 11F
07/28 19:17, 11F
推
07/29 19:10, , 12F
07/29 19:10, 12F
→
07/29 19:10, , 13F
07/29 19:10, 13F
→
07/29 19:11, , 14F
07/29 19:11, 14F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章