HDU 1466 计算直线的交点数

来源:互联网 发布:unity3d 麻将开发 编辑:程序博客网 时间:2024/06/05 01:11

计算直线的交点数

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 9787    Accepted Submission(s): 4459


Problem Description
平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数。
比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行)。
 

Input
输入数据包含多个测试实例,每个测试实例占一行,每行包含一个正整数n(n<=20),n表示直线的数量.
 

Output
每个测试实例对应一行输出,从小到大列出所有相交方案,其中每个数为可能的交点数,每行的整数之间用一个空格隔开。
 

Sample Input
23
 

Sample Output
0 10 2 3
 

Author
lcy
 

Source
ACM暑期集训队练习赛(九)
 

Recommend
lcy   |   We have carefully selected several similar problems for you:  1159 1465 2151 1160 1480 
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int a[25][2100];int n;void solve(){int i, j, k, l, r;memset(a, 0, sizeof(a));for(i=0; i<=21; i++){a[i][0]=1;}for(i=2; i<=21; i++)//i为总线数 {for(r=1;r<i;r++)//r为自由线的个数 {for(j=0;j<=190;j++)//j为交点数 {if(a[r][j]==1) {a[i][j+(i-r)*r]=1;}}}}}int main(){int i,j;solve();while(scanf("%d",&n)!=EOF){printf("0");int maxx=n*(n-1)/2;for(j=1;j<=maxx;j++){if(a[n][j]){printf(" %d",j);}}printf("\n");}return 0;}


 
0 0
原创粉丝点击