计算直线的交点数
Problem Description
平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数。
比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行)。
比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行)。
Input
输入数据包含多个测试实例,每个测试实例占一行,每行包含一个正整数n(n<=20),n表示直线的数量.
Output
每个测试实例对应一行输出,从小到大列出所有相交方案,其中每个数为可能的交点数,每行的整数之间用一个空格隔开。
Sample Input
2 3
Sample Output
0 1 0 2 3
Author
lcy
Source
Recommend
#include <iostream> using namespace std; int main() { int p[21][200], n,j,i; memset(p, 0, sizeof(p)); for(i=0; i<21; i++) p[i][0]=1; for(n=2; n<21; n++) for(int i=1; i < n; i++) for(int j=0; j<200; j++) { if(p[n-i][j]==1) p[n][j+i*(n-i)]=1; } while (scanf("%d", &n) != EOF) {cout<<"0"; for (j=1; j <= n*(n-1)/2; j++) { if (p[n][j]) printf(" %d",j); } printf("\n"); } return 0; }