zoukankan      html  css  js  c++  java
  • hdu1466 递推

    题意:
          给你n条直线,不会存在三线共点,输出所有的可能交点数..


    思路:

          这个是个地推的题目,假设当前的线段i,他里面有r条是随意的,有(i - r)条是平行的,那么当前的交点数就是 r条随意的交点数 + (i - r) * r,枚举所有的r条的交点数,mark所有的 r的交点数 + (i - r) * r,具体看代码.


    #include<stdio.h>
    #include<string.h>
    
    int mark[25][200];
    void mk_mark()
    {
       //num[k] + (i - k) * k
       
       memset(mark ,0 ,sizeof(mark));
       int i ,j ,k;
       for(i = 1 ;i <= 20 ;i ++)
       mark[i][0] = 1;
       for(i = 2 ;i <= 20 ;i ++)
       for(j = 1 ;j < i ; j ++)
       for(k = 0 ;k <= j * (j - 1) / 2 ;k ++)
       if(mark[j][k]) mark[i][k + (i - j) * j] = 1;
    }
    
    int main ()
    {
       int i ,n;
       mk_mark();
       while(~scanf("%d" ,&n))
       {
          
          for(i = 0 ;i <= n * (n - 1) / 2 ;i ++)
          {
             if(mark[n][i])
             {
                if(!i) printf("%d" ,i);
                else printf(" %d" ,i);
             }
          }
          printf("
    ");
       }
       return 0;
    }
    

  • 相关阅读:
    canvas之碎碎念
    canvas之动态时钟
    属性小问题
    readonly and disabled
    table
    地图热区
    子块元素在父块元素中居中
    Ajax与JS
    前端测试
    html5/css3
  • 原文地址:https://www.cnblogs.com/csnd/p/12063189.html
Copyright © 2011-2022 走看看