摘要:
1.使用文件的方式共有12種,下面給出了它們的符號和意義。文件使用方式 意義“rt” 只讀打開一個文本文件,只允許讀數據“wt” 只寫打開或建立一個文本文件,只允許寫數據“at” 追加打開一個文本文件,并在文件末尾寫數據“rb” 只讀打開一個二進制文件,只允許讀數據“wb” 只寫打開或建立一個二進制文件,只允許寫數據“ab” 追加打開一個二進制文件,并在文件末尾寫數據“rt+” 讀寫打開一個文本文件,允許讀和寫“wt+” 讀寫打開或建立一個文本文件,允許讀寫“at+” 讀寫打開一個文本文件,允許讀,或在...
閱讀全文
摘要:
Description定義一個結構體變量(包括年、月、日),編程序,要求輸入年月日,計算并輸出該日在本年中第幾天。注意本題一定要定義結構體變量,否則本實驗成績無效。Input輸入三個整數(并且三個整數是合理的,既比如當輸入月份的時候應該在1 至12 之間,不應該超過這個范圍)否則輸出Input error!Output輸出一個整數.既輸入的日期是本月的第幾天。Sample Input1985 1 202006 3 12Sample Output2071Hint1、算法提示:如果輸入的是2006 年3 月12 日,計算方法是:計算2006 年1 月1 日到2006-3-12 是多少天。注意同樣判
閱讀全文
摘要:
Description定義一個結構體變量(包括年、月、日),編程序,要求輸入年月日,計算并輸出該日 在本年中第幾天。注意本題一定要定義結構體變量,否則本實驗成績無效。Input輸入三個整數(并且三個整數是合理的,既比如當輸入月份的時候應該在1 至12 之間, 不應該超過這個范圍)否則輸出Input error!Output輸出一個整數.既輸入的日期是本月的第幾天。Sample Input1985 1 202006 3 12Sample Output2071Hint1、算法提示:如果輸入的是2006 年3 月12 日,計算方法是:計算2006 年1 月1 日 到2006-3-12 是多少天。注意
閱讀全文
摘要:
本題是一道相當典型的動態規劃題目,值得一看。題目:http://acm.swust.edu.cn/oj/problem/0251/我們用dp[i]線性數組來表示郵票的個數,dp[i]中的i就表示達到的面值了。也就是說當達到面值i的時候要用到dp[i]張郵票。當然,i要從1開始,這樣就有了dp[1],這個過程是為了dp[2]做的鋪墊,可以說這就是動態規劃的精髓了。View Code #include "iostream"using namespace std;#define INF 0x7ffffff #define size 2000001int dp[size];int
閱讀全文
摘要:
Description若某個家族人員過于龐大,要判斷兩個是否是親戚,確實還很不容易,現在給出某個親戚關系圖,求任意給出的兩個人是否具有親戚關系。 規定:x和y是親戚,y和z是親戚,那么x和z也是親戚。如果x,y是親戚,那么x的親戚都是y的親戚,y的親戚也都是x的親戚。Input第一行:三個整數n,m,p,(n<=5000,m<=5000,p<=5000),分別表示有n個人,m個親戚關系,詢問p對親戚關系。 以下m行:每行兩個數Mi,Mj,1<=Mi,Mj<=N,表示Ai和Bi具有親戚關系。 接下來p行:每行兩個數Pi,Pj,詢問Pi和Pj是否具有親戚關系。Outp
閱讀全文
摘要:
用途6:判斷點P是否在多邊形中是計算幾何中一個非常基本但是十分重要的算法。以點P為端點,向左方作射線L,由于多邊形是有界的,所以射線L的左端一定在多邊形外,考慮沿著L從無窮遠處開始自左向右移動,遇到和多邊形的第一個交點的時候,進入到了多邊形的內部,遇到第二個交點的時候,離開了多邊形,……所以很容易看出當L和多邊形的交點數目C是奇數的時候,P在多邊形內,是偶數的話P在多邊形外。 但是有些特殊情況要加以考慮。 如圖下圖(a)(b)(c)(d)所示。 在圖(a)中,L和多邊形的頂點相交,這時候交點只能計算一次; 在圖(b)中,L和多邊形頂點的交點不應被計算; 在圖(c)和(d) 中,L...
閱讀全文
摘要:
1.點: 只要判斷該點的橫坐標和縱坐標是否夾在矩形的左右邊和上下邊之間。2.線段、折線、多邊形: 因為矩形是個凸集,所以只要判斷所有端點是否都在矩形中就可以了。3.矩形: 只要比較左右邊界和上下邊界就可以了。4.圓: 很容易證明,圓在矩形中的充要條件是: 圓心在矩形中且圓的半徑小于等于圓心到矩形四邊的距離的最小值。
閱讀全文
摘要:
用途4:明白了用途3以后,再來看用途4那是相當的簡單呀。如果線段P1P2和直線Q1Q2相交,則線段P1P2跨立直線Q1Q2,即:( P1 - Q1 ) × ( Q2 - Q1 ) * ( Q2 - Q1 ) × ( P2 - Q1 ) >= 0。沒錯,就是這么的簡單,不用懷疑什么。
閱讀全文
摘要:
用途3:我們現在的任務就是判斷線段P1P2和線段Q1Q2是否相交。我們分兩步確定兩條線段是否相交: (1)快速排斥試驗 設以線段 P1P2 為對角線的矩形為R, 設以線段 Q1Q2 為對角線的矩形為T, 如果矩形R和矩形T不相交,顯然兩線段不會相交。 (2)跨立試驗 如果兩線段相交,則兩線段必然相互跨立對方。 若P1P2跨立Q1Q2 ,則矢量 ( P1 - Q1 ) 和( P2 - Q1 )位于矢量( Q2 - Q1 ) 的兩側, 即1.(P1 - Q1) x (Q2 - Q1)<0, 這個式子表明Q1Q2在P1Q1的右方,也就是說P1Q1在Q1Q2的...
閱讀全文
摘要:
用途2:其實這個還是用的叉乘的性質,“左邊還是右邊”,只不過這個在線上,也就是說是性質的第三條。設點為Q,線段為P1、P2 ,判斷點Q在該線段上的依據是:1.( Q - P1 ) × ( P2 - P1 ) = 0;2.Q 在以 P1,P2為對角頂點的矩形內第一點是為了保證Q點在直線P1P2上,第二點是為了保證Q點不在線段P1P2的延長線或反向延長線上對于第二點這一步驟的判斷可以用以下過程實現: ON-SEGMENT(pi,pj,pk) //pk就是要判斷的點了,pi,pj就是線段的兩個端點。 if min(xi,xj) <= xk <= max(xi,xj) and m
閱讀全文