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

     计算直线的交点数

    Time Limit: 1 Sec  Memory Limit: 64 MB
    Submit: 820  Solved: 518

    Description

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

    Input

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

    Output

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

    Sample Input

    2
    3
    

    Sample Output

    0 1
    0 2 3

    把m条线分成r和m-r两部分({n}只n条线时的交点方案的集合)
    {Pay points}=r*(m-r)+{m-r}, dp[i][j]为是否存在标志,
     1 # include<stdio.h>
     2 int main()
     3 {
     4   //  freopen("a.txt","r",stdin);
     5     int i,j,k,m,n;
     6     int a[22][200];
     7 
     8     while(scanf("%d",&n)!=EOF)
     9     {
    10         for(i=0;i<190;i++)
    11             a[0][i]=0;
    12         for(i=1;i<=n;i++)
    13         {
    14             a[i][0]=1;
    15             for(j=1;j<=(i-1)*i/2;j++)
    16                 a[i][j]=0;
    17             for(j=1;j<i;j++)
    18             {
    19                 m=i-j;
    20                 for(k=0;k<=m*(m-1)/2;k++)
    21                 {
    22                     if(a[m][k]==1)
    23                         a[i][k+j*m]=1;
    24                  /*   printf("%d,%d %d,%d
    ",m,k,i,k+j*m);
    25                     printf("
    ");*/
    26                 }
    27             }
    28         }
    29         printf("0");
    30         for(i=1;i<=n*(n-1)/2;i++)
    31         {
    32             if(a[n][i]==1)
    33                 printf(" %d",i);
    34         }
    35         printf("
    ");
    36     }
    37     return 0;
    38 }
    View Code
  • 相关阅读:
    Power of Cryptography
    Radar Installation
    Emag eht htiw Em Pleh
    Help Me with the Game
    89. Gray Code
    87. Scramble String
    86. Partition List
    85. Maximal Rectangle
    84. Largest Rectangle in Histogram
    82. Remove Duplicates from Sorted List II
  • 原文地址:https://www.cnblogs.com/get-an-AC-everyday/p/4188056.html
Copyright © 2011-2022 走看看