2錯筆記 迴旋星空 妙用排序

2021-10-10 04:10:30 字數 860 閱讀 8431

迴旋星空——妙用排序

對這題印象挺深刻的,覺得應該再刷沒問題,結果還是敗了,想到用排序,但在整理距離的資料時就全亂套了,尤其是這一部分

for ( i=1; i<=n; i++ )

首先是犯了**病,忘記歸零重置了,即

cnt = 1;

memset ( dis, 0, sizeof(dis) );

忘記了

然後就是for迴圈的條件了,繞了好久沒繞出來,以為是冒泡的條件,即把所有兩兩配對的點找出來就好了,其實再好好理解下題意就直到怎麼改了。

第乙個i是找基準點,然後第二個j是遍歷全部的點計算i與j的全部可能距離,故可能的情況要遠遠大於兩兩配對的點的情況。

還有乙個十分糟心的地方就是sort函式,因為不是從0下標開始計數,又是第一次用c++的sort函式,要精確計算出排序的長度,不然結果就會有誤(因為多餘的資料被memset為0了)

#include using namespace std;

struct point;

int distance ( int x1, int x2, int y1, int y2 )

int main()

sort(dis+1, dis+n+1);

for ( k=1; k<=n; k++ )

if ( dis[k] == dis[k+1] )

sum += 2;

} if ( sum==0 ) cout << "wa" << endl;

else

cout << sum << endl;

} return 0;

}

排序學習筆記 2 快速排序

學習排序,參考 測試程式 表示一下感謝 交換排序。包括氣泡排序和快速排序,一般說來冒泡是不能給別人說的 怕丟臉,呵呵。所以我們就預設交換排序 快速排序。1.思想 a 它採用的是分而治之的策略 divide and conque 基本思想是 任取待排序列的某個記錄 這句話就包含了優化的可能 作為基準,...

排序演算法筆記2 氣泡排序

顧名思義,交換排序就是根據兩個關鍵字值的比較結果,不滿足次序要求時交換。氣泡排序和快速排序是典型的交換排序演算法。其中快速排序是目前最快的排序演算法 氣泡排序是一種最簡單的交換排序演算法,通過兩兩比較,逆序交換,使關鍵字大的像泡泡一樣冒出來放在尾部。重複執行氣泡排序,最終得到有序序列。1 待排序的元...

演算法筆記2 排序

1.選擇排序 首先,找到陣列中最小的那個元素,其次,將他和陣列第乙個元素交換位置,再次,在剩下的元素中找到最小的元素,將他和陣列的第二個元素交換位置。如此反覆,直到將整個陣列排序。不斷的選擇剩餘元素的最小值 2.插入排序 對部分有序陣列很有效 為了給要插入的元素騰出空間,我們需要將其餘所有元素在插入...