P2789 直线交点数


传送门

思路

N条直线相交(且没有三线共点)最多有N(N-1)/2个交点。交点数为取出的线*剩余的线+取出的线的交点,满足递归性质。

代码

#include
using namespace std;
bool Array[500];int ans;
void Count(int remain, int now)
{
    if (!remain) {
        if (!Array[now])ans++;
        Array[now] = true;
        return;
    }
    else for (int i = 1; i <= remain; i++)
        Count(remain - i, i * (remain - i) + now);
    return;
}
int main(void)
{
    int N = 0;
    cin >> N;
    Count(N, 0);
    cout << ans;
    return 0;
}