HDU1466 計算直線交點(輸出各種交點方案)

2021-05-23 06:31:44 字數 664 閱讀 2701

#include

#include

int a[21][191];

int main()}}

}while(scanf("%d",&n)!=eof)

printf("%d/n",q);

}return 0;

}/*設乙個陣列dp[i][j]來記錄i條直線,j個交點的情況是否存在,若存在,dp[i][j]=1,反

之,dp[i][j]=0.在輸入n之前,先將所有可能情況用陣列dp記錄下來。方法如下:

dp[i][0]=1;無論有多少條直線,交點為0(所有直線平行)的情況必定存在,故賦值為1.

假設有n條直線,那麼這n條直線的交點數可以看作是(n-i)*i與j的和,這裡(n-i)表示

平行線的條數,i表示自由線的條數,j表示i條自由線的交點數。因為1條自由線與(n-i)條

平行線必定有(n-i)*1個交點,這裡申明下自由線與平行線不會平行,否則自由線與平行線

就沒有區分的必要了。那麼i條自由線與平行線的交點總數就為(n-i)*i,由於i條自由線可

能互相平行也可能相交,故需要加上i條自由線自身的交點數j。其實這個j與計算n條直線的

交點數的方法是一樣的,只不過規模縮小了,正是因為這點我們才可以使用dp演算法來解這題。

數學表示式:

f(n)=(n-i)*i+j;*/

hdu 1466 計算直線的交點數

include intmain return0 一 n條直線把空間分成幾部分 現在說地是空間了,不是平面了,要注意!我們來討論一下吧 點分線 0維分1維 c n,1 c n,0 線分面 1維分2維 c n,2 c n,1 c n,0 麵分空間 2維分3維 c n,3 c n,2 c n,1 c n,...

hdu 1466 計算直線的交點數

平面上有n條直線,且無三線共點,問這些直線能有多少種不同交點數。比如,如果n 2,則可能的交點數量為0 平行 或者1 不平行 input 輸入資料報含多個測試例項,每個測試例項佔一行,每行包含乙個正整數n n 20 n表示直線的數量.output 每個測試例項對應一行輸出,從小到大列出所有相交方案,...

HDU1466 計算直線的交點數

1 n條直線互不平行且無三線共點的最多交點數max 1 2 n 1 n n 1 2 2 一般統計的方法 假設一共有n a b條直線 即n條直線分成2組,分別為a條和b條 則 總的交點數 a內的交點數 b內的交點數 a,b之間的交點數 3 我們來分析加入第n條直線的情況 這裡以n 4為例 分類方法 和...