hdu1466 计算直线的交点个数
2013-09-17 16:24
232 查看
HDU1466
模拟完成的。。。
假设有N跟直线,分别讨论没有平行直线,有2条平行直线,3条......,n条。
假设有三条直线平行,那么平行的三条直线,与其他n-3条直线的交点为3*(n-3),其他的n-3条直线可能的交点在算n条直线之前就已经算好了。
则,如n-3条直线中可能的交点为a,则在n条直线中的交点就可能为a+3*(n-3)。
就这样ok了,由于数据不大,所以完全可以AC。
模拟完成的。。。
假设有N跟直线,分别讨论没有平行直线,有2条平行直线,3条......,n条。
假设有三条直线平行,那么平行的三条直线,与其他n-3条直线的交点为3*(n-3),其他的n-3条直线可能的交点在算n条直线之前就已经算好了。
则,如n-3条直线中可能的交点为a,则在n条直线中的交点就可能为a+3*(n-3)。
就这样ok了,由于数据不大,所以完全可以AC。
#include <stdio.h> int v[22][200]; void init() { v[0][0] = 1; v[1][0] = 1; v[2][0] = 1; v[2][1] = 1; v[3][0] = 1; v[3][2] = 1; v[3][3] = 1; for (int i = 4; i <= 20; i++) { for (int j = 1; j <= i; j++) { int k = i-j; int temp = j*k; for (int q = 0; q <= k*(k-1)/2; q++) { if (v[k][q] == 1 && temp+q <= i*(i-1)/2) v[i][temp+q] = 1; } } } } int main() { init(); int n; while (scanf("%d", &n) != EOF) { for (int i = 0; i < n*(n-1)/2; i++) { if (v [i] == 1) printf("%d ", i); } printf("%d\n", n*(n-1)/2); } return 0; }
相关文章推荐
- hdu 1466 计算直线的交点数
- HDU 1466 计算直线的交点数
- HDU 1466 计算直线的交点数 dfs
- hdu 1466 计算直线的交点数
- 计算直线的交点数(HDU 1466)
- 计算直线的交点数(HDU-1466)
- HDU 1466 计算直线的交点数
- hdu 1466 计算直线的交点数
- hdu 1466 计算直线的交点数(动态规划)
- HDU - 1466 计算直线的交点数
- Dynamic Programming 练习(题源 hdu 1466, 计算直线的交点数)
- hdu 1466计算直线的交点数
- HDU 1466 计算直线的交点数
- HDU 1466 计算直线的交点数
- hdu 1466 计算直线的交点数
- HDU---1466-计算直线的交点数(DP)
- hdu 1466 计算直线的交点数 第四专…
- hdu 1466 计算直线的交点数
- HDU 1466 计算直线的交点数
- hdu----(1466)计算直线的交点数(dp)