您的位置:首页 > 其它

hdu 1466 计算直线的交点数

2014-07-24 15:24 323 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1466

N条直线的交点方案数 = c 条直线交叉的交点数与(N-c)条平行线 + c 条直线本身的交点方案 = (N - c) * c + c 条直线之间的交点数。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int dp[21][200];

void inti()
{
for(int i=0; i<=20; i++)
{
for(int j=0; j<=190; j++)
dp[i][j]=0;
}
for(int i=0; i<=20; i++)
{
dp[i][0]=1;
for(int j=0; j<=i; j++)
{
for(int k=0; k<=j*(j-1)/2; k++)
{
dp[i][(i-j)*j+dp[j][k]*k]=1;
}
}
}
}

int main()
{
int n;
inti();
while(scanf("%d",&n)!=EOF)
{
printf("0");
for(int i=1; i<=190; i++)
{
if(dp
[i])
{
printf(" %d",i);
}
}
printf("\n");
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: