迴旋星空——妙用排序
對這題印象挺深刻的,覺得應該再刷沒問題,結果還是敗了,想到用排序,但在整理距離的資料時就全亂套了,尤其是這一部分
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.插入排序 對部分有序陣列很有效 為了給要插入的元素騰出空間,我們需要將其餘所有元素在插入...