直线交点

Posted qswx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直线交点相关的知识,希望对你有一定的参考价值。

Description

平面上有n条直线,且无三线共点,问这些直线能有多少种不同的交点数。

Analysis

判断各个交点数的存在性,需要采用存在性动规的状态转移。

i条直线的交点数要由j条直线转移(j<i)过来,那么i-j条直线一定要处于某种便于处理的状态。什么样的状态呢,不难想到平行,平行的各条直线无交点且与其他直线的交点数相等,便于状态转移。

接下来就是转移方程的分析,对于j条直线存在k个交点,那么i-j条平行的直线每条一定与j条直线各有一个交点,所以i条直线就存在 (i-j)·j+k 个交点。

dp[i][(i-j)·j+k]=dp[j][k]?1

Code

#include <bits/stdc++.h>

int n,exist[21][401];

int main(){
    freopen("test.in","r",stdin);
    freopen("test.out","w",stdout);
    std::cin>>n;
    exist[0][0]=1;
    for(int i=1;i<=n;i++)
        for(int j=0;j<i;j++)
            for(int k=0;k<=j*(j-1);k++)
                if(exist[j][k])exist[i][k+j*(i-j)]=1;
    for(int i=0;i<=400;i++)
        if(exist[n][i])std::cout<<i<<std::endl;
    return 0;
}

以上是关于直线交点的主要内容,如果未能解决你的问题,请参考以下文章

UVA 11178 Morley's Theorem(旋转+直线交点)

怎样在matlab中得到直线方程与plot出的曲线之间的交点坐标

查找直线和 QPainterPath 之间的交点

matlab中如何求两直线交点?

直线交点

判断一条线与四边形的交点