标签:
2 3
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\n",m,k,i,k+j*m); 25 printf("\n");*/ 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("\n"); 36 } 37 return 0; 38 }
标签:
原文地址:http://www.cnblogs.com/get-an-AC-everyday/p/4188056.html