給你寫了一個求質(zhì)心的函數(shù),代碼如下:
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供孟村網(wǎng)站建設(shè)、孟村做網(wǎng)站、孟村網(wǎng)站設(shè)計、孟村網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、孟村企業(yè)網(wǎng)站模板建站服務(wù),十余年孟村做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
(因?yàn)楹瘮?shù)中使用到求平方根的函數(shù)sqrt,所以請包含math.h頭文件)
#include math.h
POINT ZX(int X1,int Y1,int X2,int Y2,int X3,int Y3) //參數(shù)分別為三角形的三個坐標(biāo)點(diǎn)
{float L1,L2,L3,N; //L1,L2,L3分別代表三條邊的長,(N用來作交換用)
POINT PN; //用來表示質(zhì)心的坐標(biāo)
L1=sqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2)); //分別求出三條邊的長
L2=sqrt((X1-X3)*(X1-X3)+(Y1-Y3)*(Y1-Y3));
L3=sqrt((X3-X2)*(X3-X2)+(Y3-Y2)*(Y3-Y2));
if (L1L2) //如果L2比L1大,就把兩個數(shù)交換
{N=L1;
L1=L2;
L2=N;}
if (L1L3) //如果L3比L1大,就把兩個數(shù)交換
{N=L1;
L1=L3;
L3=N;}
//經(jīng)過兩輪的比較和交換,可以確保L1是三條邊中最大的一條
if (L1=(L2+L3)) //如果最大邊大于等于兩條小條的和,則三點(diǎn)構(gòu)不成一個三角形
{PN.x=0xffffffff; //設(shè)置一個錯誤值
PN.y=0xffffffff;
return PN;} //讓函數(shù)返回錯誤值,這樣調(diào)用函數(shù)之后就可以作出相應(yīng)的判斷
/*如果通過判斷符合三角形的條件,求質(zhì)心,質(zhì)心就是重心,公式很簡單.
就是X=(X1+X2+X3)/3;Y=(Y1+Y2+Y3)/3,如果要證明有點(diǎn)長,這里就不說.
你可以自己試著證明一下,或百度一下*/
PN.x=(X1+X2+X3)/3;
PN.y=(Y1+Y2+Y3)/3;
return PN;}
要定位到行,代碼要debug編譯,至少要帶上行信息。
線程占用內(nèi)存高低,可以用jmap做heap dump出來給MomoryAnalysis分析他可以按線程統(tǒng)計,一般也可以用它來找出造成OOM的原因。
線程占用CPU,上述內(nèi)存的問題是一個方面,另外也可以jstack打線程棧來分析。Linux上ps -T -p可以看底層線程的CPU占用(Windows上需要額外按工具),記得線程編號可以在jstack打出來的線程棧中檢查。
(3,4,N)
上北下南左西又東
順時針排序:北東南西
北1 東2 南3 西4
(3,4,1)
左轉(zhuǎn)1+1=2東
右轉(zhuǎn)1-1=01,則0=4西
后轉(zhuǎn)1+2=3南
可以把朝向問題看成類似約瑟夫的問題。
用數(shù)組記錄當(dāng)前坐標(biāo)X Y 及朝向。用1,2,3,4代表北東南西
左轉(zhuǎn)后,(3,4,2)
往前一步,
當(dāng)朝向不同的時候,有對應(yīng)的向前向后是改變哪個坐標(biāo)值,
寫四個朝向時候的坐標(biāo)的算法
然后調(diào)用,傳入2,則調(diào)用case=2時的動作,如果向前則~~~向后則~~~~再命令轉(zhuǎn)向則(調(diào)用處理方向改變的函數(shù))~~~~
最后輸出(,,),對最后一個兌換成“東南西北”輸出就行了
()