zoukankan      html  css  js  c++  java
  • HDU 1466

    经典DP,这样的递推确实有点难。 把所有直线分成两组,可以知道

    m条直线的交点方案数 =(m-r)条平行线与r条直线交叉的交点数  + r条直线本身的交点方案 

    亦就是  =(m-r)*r+r条之间本身的交点方案数(0<=r<m);

     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 
     5 bool ans[25][250];
     6 
     7 int main(){
     8     memset(ans,false,sizeof(ans));
     9     for(int i=1;i<=20;i++){
    10         ans[i][0]=true;
    11         for(int r=0;r<=i;r++){
    12             for(int k=0;k<=r*(r-1)/2;k++)
    13             if(ans[r][k]){
    14                 ans[i][(i-r)*r+k]=true;
    15             }
    16         }
    17     }
    18     int n;
    19     while(scanf("%d",&n)!=EOF){
    20         bool flag=false;
    21         for(int i=0;i<=n*(n-1)/2;i++){
    22             if(flag){
    23                 if(ans[n][i])
    24                 printf(" %d",i);
    25                 continue;
    26             }
    27             else if(ans[n][i]){
    28                 flag=true;  printf("%d",i);
    29             }
    30         }
    31         printf("
    ");
    32     }
    33     return 0;
    34 }
    View Code
  • 相关阅读:
    变量
    数据类型
    常量
    synchronized&volatile
    类,方法,成员变量和局部变量的可用修饰符
    类及其组成所使用的常见修饰符
    四种权限修饰符
    import
    finally
    final
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/3796108.html
Copyright © 2011-2022 走看看