luoguP2789 直线交点数

一、题目内容

【题目描述】

平面上有N条直线,且无三线共点,那么这些直线能有多少不同的交点数?

【输入格式】

一个正整数N

【输出格式】

一个整数表示方案总数

【输入样例】

4

【输出样例】

5

【说明】

N<=25

【测试网站】

luoguP2789

二、题目分析

题目求不同交点数的方案数,那么我们可以将所有情况的交点数都求出,然后查重统计答案。可以根据是否平行划分成不同的情况,比如,对于n个点,我们考虑,n条直线相互平行、n-1条直线相互平行、n-2条直线相互平行、、、,即n-r条直线相互平行,那个这r条相互平行的直线与剩下的直线的交点数 = r(n-r), 然后我们再递归到下一层来讨论n-r的情况,依次类推下去。请结合代码理解!

三、代码示例

#include <bits/stdc++.h>

using namespace std;
const int maxn = 3000;

int n,ans = 0;
bool vis[1000];

void fun(int x, int y)
{
  if(x == 0) {if(!vis[y]) ans++; vis[y] = true; return ;}
  for(int i = x; i >= 1; i--)  fun(x-i,i*(x-i) + y);
}

int main()
{
  cin >> n;
  memset(vis,false,sizeof(vis));
  fun(n,0);
  cout << ans << endl;
}


 上一篇
luoguP1020 导弹拦截 luoguP1020 导弹拦截
一、题目内容【题目描述】 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用
2019-02-11
下一篇 
luoguP1616 疯狂的采药 luoguP1616 疯狂的采药
一、题目内容【题目描述】 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,
2019-02-04
  目录