Problem F 質心演算法

2022-04-02 13:43:06 字數 2395 閱讀 8454

在很多應用中,需要對某個目標進行定位。比如對於乙個未知座標的點a,假定已知a點與n個點相鄰,且已知n個相鄰點的座標,則可取n個點的質心作為a點座標的乙個估計值。

所謂質心,就是指其橫座標、縱座標分別為n個點的橫座標平均值、縱座標平均值的點。即:假定n個點的座標分別(x1,y1),(x2,y2),......,則質心的座標為((x1+x2+...)/n, (y1+y2+...)/n)。

現在需要你編寫2個類:

1. point類:包括乙個點的橫座標和縱座標,並提供適當的建構函式、析構函式和拷貝建構函式,以及getx()和gety()方法。

2. graph類

(1)資料成員point *points;表示與a點相鄰的點的集合。

(2)資料成員:int numofpoints;表示相鄰點的個數。

(3)適當的建構函式、析構函式。

(4)point getcentroid()方法:用於返回質心點。

注意:同一類的物件之間的賦值運算(=)不呼叫拷貝建構函式。

輸入為多行,第一行m>0表示有m個測試用例。

每個測試用例包含多行。第一行n>0表示有n個點,之後是n個點的橫座標和縱座標,每個點佔一行。

見樣例。

1 5

0 01 1

2 23 3

4 4

the point (0.00, 0.00) is created!

the point (0.00, 0.00) is created!

the point (0.00, 0.00) is created!

the point (0.00, 0.00) is created!

the point (0.00, 0.00) is created!

the point (0.00, 0.00) is created!

the point (0.00, 0.00) is created!

the point (1.00, 1.00) is created!

the point (2.00, 2.00) is created!

the point (3.00, 3.00) is created!

the point (4.00, 4.00) is created!

the point (0.00, 0.00) is created!

the point (0.00, 0.00) is created!

the point (0.00, 0.00) is created!

the point (0.00, 0.00) is created!

the point (0.00, 0.00) is created!

a graph with 5 points is created!

the point (2.00, 2.00) is created!

a point (2.00, 2.00) is copied!

a point (2.00, 2.00) is erased!

the centroid is (2.00, 2.00).

a point (4.00, 4.00) is erased!

a point (3.00, 3.00) is erased!

a point (2.00, 2.00) is erased!

a point (1.00, 1.00) is erased!

a point (0.00, 0.00) is erased!

a graph with 5 points is erased!

a point (4.00, 4.00) is erased!

a point (3.00, 3.00) is erased!

a point (2.00, 2.00) is erased!

a point (1.00, 1.00) is erased!

a point (0.00, 0.00) is erased!

a point (2.00, 2.00) is erased!

當使用物件作為函式返回值時,會產生乙個臨時物件,此時會呼叫拷貝建構函式。但是在g++編譯器(也就是大家常用的code::blocks所用的編譯器)中,當函式返回的物件給另乙個物件進行賦值時,如果函式返回值是乙個區域性變數,則不會呼叫拷貝建構函式。所以,如果想在此程式中實現拷貝建構函式的呼叫,必須在getcentroid中返回乙個使用new運算子建立的物件,而不是乙個已經定義的區域性物件。

#include

#include

using namespace std;

class point

graph graph(points, num);

centroid = graph.getcentroid();

cout<}return 0;

}

Problem F 質心演算法

time limit 1 sec memory limit 128 mb submit 974 solved 316 submit status web board 在很多應用中,需要對某個目標進行定位。比如對於乙個未知座標的點a,假定已知a點與n個點相鄰,且已知n個相鄰點的座標,則可取n個點的質心...

演算法 貪心演算法

把乙個複雜問題分解為一系列較為簡單的區域性最優選擇,每乙個選擇都是對當前解的乙個擴充套件,知道獲得問題的完整解。在解決問題的策略上目光短淺,只根據當前已有的資訊做出選擇,而且一旦做出了選擇,不管將來有什麼結果這個選擇都不會改變。換言之,貪心法並不是從整體最優考慮,它所做出的選擇只是在某種意義上的區域...

演算法 貪心演算法

集合覆蓋問題 旅行商問題等都屬於np完全問題,在數學領域上並沒有快速得到最優解的方案,非常適合用貪婪演算法。判斷方法 1.元素較少時,一般執行速度很快,但隨著元素數量增多,速度會變得非常慢 2.涉及到需要計算比較 所有的組合 情況的通常是np完全問題 3.無法分割成小問題,必須考慮各種可能的情況。這...