递推 hdu 1396

给你边长为n的等边三角形 

算有几个三角形

z[1]=1;

第N层 z[n]

 1   n-1层 z[n-1]

 2   2*n-1 个小的

 3   新产生的 正的>1的三角形 n*(n-1)/2;

 4   新产生的倒的>1的三角形  /这边可以去推一推 

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>

using namespace std;
typedef long long ll;
#define MAXN 505
ll z[MAXN];

int main()
{
    z[1]=1;
    for(int i=2;i<=500;i++)
    {
        z[i]=z[i-1]+2*i-1+i*(i-1)/2;
        int  k=i-3;
        while(k>0)
        {
            z[i]+=k;
            k-=2;
        }
    }
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        printf("%lld
",z[n]);
    }
    return  0;
}
原文地址:https://www.cnblogs.com/cherryMJY/p/6242054.html