杭電1466計算直線的交點數(經典dp)

2021-07-16 09:12:31 字數 902 閱讀 7199

計算直線的交點數

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

description

平面上有n條直線,且無三線共點,問這些直線能有多少種不同交點數。 

比如,如果n=2,則可能的交點數量為0(平行)或者1(不平行)。

input

輸入資料報含多個測試例項,每個測試例項佔一行,每行包含乙個正整數n(n<=20),n表示直線的數量. 

output

每個測試例項對應一行輸出,從小到大列出所有相交方案,其中每個數為可能的交點數,每行的整數之間用乙個空格隔開。

sample input

2

3

sample output

0 1

0 2 3

設f(n)為其n條直線交點方案,假設有r條非互相平行線,則f[n]=(n-r) * r (n-r條互相平行線和其它r條線的交點) + f[r] ;

我們設定乙個二維陣列dp[i][j]代表i條直線有j個交點的情況,若存在等於1,否則為0;

可以推出:只要dp[r][j]=1(r條直線有j個交點是成立的),那麼肯定有dp[i][(i-r)*r+j]=1;

思路一通,我們只需要先記錄下n條直線所有可能的方案數,從dp[n][0]到dp[n][n*(n-1)/2],輸出dp[n][j]==1的交點數j即可。

#include#includeint main()

}while(~scanf("%d",&n))

return 0;

}

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為例 分類方法 和...