直线交点数
题目描述
平面上有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; beginreadln(n);fillchar(a,sizeof(a),0);for i:=1 to n dobegina[i,0]:=1;for j:=1 to i dobeginm:=i-j;for k:=0 to (m*(m-1)) div 2 doif a[m,k]=1 then a[i,m*j+k]:=1;end;end;ans:=0;for i:=0 to (n*(n-1))div 2 doif a[n,i]=1 then inc(ans);writeln(ans); end.转载于:https://www.cnblogs.com/YYC-0304/p/9499973.html