zoukankan      html  css  js  c++  java
  • 杭电1466

    平面上有N条直线,且无三点共点,

    View Code
     1 //杭电1466
     2 /*
     3 2
     4 3
     5 
     6 
     7 0 1
     8 0 2 3
     9 */
    10 #include <stdio.h>
    11 #include <stdlib.h>
    12 #include <string.h>
    13 int main ()
    14 {
    15     int dp[21][191],i,j,r,n,max;
    16     
    17     memset(dp,0,sizeof(dp));  //数组dp空间初始化为0
    18     
    19     for(i=0;i<21;i++)
    20         dp[i][0]=1;  //0个交点的情况初始值为1
    21     
    22     dp[1][0]=1;  //递归出口
    23     
    24     for(i=2;i<21;i++)
    25     {
    26         for(r=1;r<i;r++)
    27         {
    28             for(j=0;j<191;j++)  //20条直线最多交点数为190 
    29             {
    30                 if(dp[i-r][j]==1)  //递归思想:如果 r 条直线存在交点数 j (这里 i - r 保证了r 可以取到 1 至 i - 1,即有dp[r][k])
    31                     dp[i][j+(i-r)*r]=1;  //则i条直线必有(i-r)*r+j(j 即dp[r][k])个交点,标记为 1
    32             }
    33         }
    34     }
    35 
    36     while(scanf("%d",&n)!=EOF)
    37     {
    38         printf("%d",0);
    39         max=n*(n-1)/2;
    40         for(j=1;j<=max;j++)
    41         {
    42             if(dp[n][j])
    43                 printf(" %d",j);
    44         }
    45         printf ("\n");
    46     }
    47     
    48     return 0;
    49 } 

    计算直线的交点数

  • 相关阅读:
    尾递归
    Appium环境搭建
    虚拟机与主机的相互访问,虚拟机访问外网
    Python
    npm i 安装
    redis过期键删除策略
    Redis的过期策略和内存淘汰机制
    redis的两种持久化方案
    JVM 方法内联
    进程/线程/协程
  • 原文地址:https://www.cnblogs.com/zlyblog/p/2577427.html
Copyright © 2011-2022 走看看