当前位置:编程学习 > C#/ASP.NET >>

hdu 1249 三角形 (DP)

1:
可以画一个圆,圆里放一个内正三角形。当放入第二个时,我们就把它转化为把已有的第一个三角形围着同心轴稍微往右转一点点(向左转一样的),那么,第二个三角形的每一条边都会与第一个三角形的其中两条边相交,这样就可得3*1*2+2个区域,3表示3条边,1表示第二个三角形的每一条边都会与第一个三角形的其中两条边相交后得到一个三角形,2表示2个三角形,+2则表示外面的区域和同有的2个三角形共有的一个区域。同样第三个三角形会与第一第二个三角形都有两条边相交。可得:3*2*3+2
         由些可得,n个三角形:3*(n-1)*n+2
2:
递推公式:a[i]=a[i-1]+(i-1)*6
[csharp] 
#include"stdio.h" 
int a[10010]; 
int main() 

    int i,t,n; 
    a[1]=2;a[2]=8; 
    for(i=3;i<=10000;i++) 
        a[i]=a[i-1]+2*(i-1)*3; 
    scanf("%d",&t); 
    while(t--) 
    { 
        scanf("%d",&n); 
        printf("%d\n",a[n]); 
    } 
    return 0; 

 

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,