zoukankan      html  css  js  c++  java
  • G题 hdu 1466 计算直线的交点数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1466

    计算直线的交点数

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


    Problem Description
    平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数。
    比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行)。
     
    Input
    输入数据包含多个测试实例,每个测试实例占一行,每行包含一个正整数n(n<=20),n表示直线的数量.
     
    Output
    每个测试实例对应一行输出,从小到大列出所有相交方案,其中每个数为可能的交点数,每行的整数之间用一个空格隔开。
     
    Sample Input
    2
    3
     
    Sample Output
    0 1
    0 2 3
     
    Author
    lcy
     
    Source
     
    题目大意:计算直线的交点数,注意考虑平行的问题,最后输出所有可能的交点个数。
     
    解题思路:这里采用dp的方法。代码中有详解。
     
    详见代码。
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 
     5 using namespace std;
     6 
     7 long long a[21][200]; //a[i][j]表示i条直线有j个交点,因为20条直线最多有C(20,2)=190条直线
     8                       //开200数组就够,下面循环也是一样。
     9 
    10 int main ()
    11 {
    12     memset(a, 0, sizeof(0));
    13     for (int i=1; i<=20; i++)
    14     {
    15         a[i][0] = 1;
    16         for (int j=1; j<=i; j++)        //i条直线中有j条非平行线,则有i-j条非平行线。
    17         {
    18             for (int k=0; k<=190; k++)  //遍历0-190,若j条线有k个交点成立,则在加上i-j条平行线就有i条线(i-j)*j+k个交点成立
    19             {
    20                 if (a[j][k])
    21                 a[i][(i-j)*j+k] = 1;
    22             }
    23         }
    24     }
    25     int n;
    26     while (scanf ("%d",&n)==1)
    27     {
    28         printf ("0");
    29         for (int i=1; i<=190; i++)
    30         if (a[n][i])
    31         printf (" %d",i);
    32         printf ("
    ");
    33     }
    34     return 0;
    35 }
     
     
  • 相关阅读:
    山寨 《寻找房祖名》
    css3 弹性效果上下翻转demo
    CSS3 Hover 动画特效
    判断一个字符串通过变化字符的位置,是否可以组成回文
    获取多个字符串中的共同字符
    转换为回文的步数
    IOS中图片的一些处理方法
    python django的一点笔记
    一个图片切割的例子
    一个批量修改文件夹中文件名的命令
  • 原文地址:https://www.cnblogs.com/qq-star/p/4622997.html
Copyright © 2011-2022 走看看