zoukankan      html  css  js  c++  java
  • 直线交点数

    题目描述
    平面上有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.
    
    
  • 相关阅读:
    volatile
    public && protected && private
    class && struct
    jQuery-实现全选与反选
    .NET Fframework
    C# 中的单精度与双精度区别
    C#中的集合(HashTable与Array类)
    c#中的数组、ArrayList、List区别
    C#属性和字段区别、get与set用法
    C#中委托和事件
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9499973.html
Copyright © 2011-2022 走看看