problem description
平面上有n條直線,且無三線共點,問這些直線能有多少種不同交點數。
比如,如果n=2,則可能的交點數量為0(平行)或者1(不平行)。
input
輸入資料報含多個測試例項,每個測試例項佔一行,每行包含乙個正整數n(n<=20),n表示直線的數量.
output
每個測試例項對應一行輸出,從小到大列出所有相交方案,其中每個數為可能的交點數,每行的整數之間用乙個空格隔開。
sample input23
sample output
0 10 2 3
思路:以n=5為例,構成的情況分為5種。
1、5條平行線 交點0個
2、4條平行線 在此基礎上加1條與他們不平行的線 交點0+4*1個(1條線交點0個)
3、3條平行線 在此基礎上加2條與他們不平行的線(這2條可以平行也可以不平行) 交點0+3*2個或1+3*2個(2條線交點0或1個)
4、2條平行線 在此基礎上加3條與他們不平行的線(這3條可以平行也可以不平行) 交點0+2*3個或2+2*3個或3+2*3個(3條線交點0或2或3個)
5、1條線 在此基礎上加4條與他不平行的線(這4條可以平行也可以不平行) ...
由此可知,n條線可以在已知m條線的交點個數k的基礎上+m*(n-m),得到n條線可構成的交點個數。
#include #include #include #include #include using namespace std;
int vis[25][200];
int main()
{ int n;
while(scanf("%d",&n)!=eof)
{int m=n*(n-1)/2;
memset(vis,0,sizeof(vis));
for(int i=1;i<=20;i++)
vis[i][0]=1;
for(int i=2;i<=n;i++)
{for(int j=1;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為例 分類方法 和...