HDU 1466 计算直线的交点数 dp晕

来源:互联网 发布:骑士数据 编辑:程序博客网 时间:2024/05/16 15:33

dp[a][b]:表示有a条边的时候,有b个交点。

状态方程:若dp[a][b]=1,则dp[a+k][b+(n-pingxing)*pingxing]=1;

#include<stdio.h>#include<string.h>int main(){int n,f[25],dp[25][200];//[平行边的数量][交点数量]memset(dp,0,sizeof(dp));for(int i=0;i<=20;i++) dp[i][0]=1;for(int i=2;i<=20;i++){for(int j=1;j<i;j++){for(int k=0;k<200;k++){if(dp[i-j][k]){dp[i][k+(i-j)*j]=1;}}}}while(~scanf("%d",&n)){for(int i=0;i<=n*(n-1)/2;i++)if(dp[n][i]) {if(!i) printf("%d",i);else printf(" %d",i);}printf("\n");}return 0;}

0 0
原创粉丝点击