平面分割问题
p条直线相交于一点时,分割的图形有 2*(n-1) 个,此时再加一条直线,在 2*(n-1) 的基础上再加 n条,此时为2*n
n条曲线,其中有m条相交于一点,每两个曲线都交于两点
平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数。 比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行)。
1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 #include<cstring> 5 #include<map> 6 #include<set> 7 #include<algorithm> 8 #include<cmath> 9 #include<cstdlib> 10 using namespace std; 11 int f[25][200]; 12 void solve() 13 { 14 f[1][0] = 1; 15 for (int n = 2; n <= 20; n++) 16 { 17 f[n][0] = 1; 18 for (int i = 1; i < n; i++) 19 for (int j = 0; j < 200; j++) 20 if (f[n - i][j]==1) 21 f[n][j + i * (n - i)] = 1; 22 } 23 } 24 int main() 25 { 26 solve(); 27 int n; 28 while (scanf("%d", &n) != EOF) 29 { 30 int t = 0; 31 for (int i = 0; i <= n * (n - 1) / 2; i++) 32 if (f[n][i]) 33 { 34 t++; 35 if (t != 1) printf(" "); 36 printf("%d",i); 37 } 38 printf("\n"); 39 } 40 41 return 0; 42 } 43
https://blog.csdn.net/somksomk/article/details/8500194