直线交点数
题目描述
平面上有N条直线,且无三线共点,那么这些直线能有多少不同的交点数?
输入输出格式
输入格式:
一个正整数N
输出格式:
一个整数表示方案总数
输入输出样例
输入样例#1:
4
输出样例#1:
5
说明
N<=25
.
.
.
.
.
.
分析
用 a[x,y]表示直线条数为x时,是否可以有y个交点。(是为1,否为0)。
n条直线相交,最多有n*(n-1)/2个交点。
设i条直线相交,有j条平行,剩下(i-j)条相交于这j条直线。(1≤j≤i)
则共 ((i-j)*j+k)个交点,其中k为(i-j)条直线相交可能的点数。
最后,只要统计a[n,i] (0≤i≤n*(n-1)/2) 中可行方案的总数即可。
.
.
.
.
.
.
程序:
var
a:array[1..25,0..300]of longint;
n,m,i,j,k,ans:longint;
begin
readln(n);
fillchar(a,sizeof(a),0);
for i:=1 to n do
begin
a[i,0]:=1;
for j:=1 to i do
begin
m:=i-j;
for k:=0 to (m*(m-1)) div 2 do
if a[m,k]=1 then a[i,m*j+k]:=1;
end;
end;
ans:=0;
for i:=0 to (n*(n-1))div 2 do
if a[n,i]=1 then inc(ans);
writeln(ans);
end.