UVA11401-Triangle Counting-递推

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA11401-Triangle Counting-递推相关的知识,希望对你有一定的参考价值。

给出一个数字n,计算从1到n能组成几个不同的三角形。

n的范围是10^6,大概就是递推吧。从F[i-1]到F[i]可以线性求出。要注意结果超出int。

 

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

long long dp[1000100];
int N;

int main()
{
    dp[3] = 0;
    dp[4] = 1;
    dp[5] = 3;

    for(int i=6;i<1000010;i++)
    {
        long long k = i-3;
        if(k&1)
            dp[i] = dp[i-1]+(k+1)*(k+1)/4;
        else
            dp[i] = dp[i-1]+ k*(k+2)/4;
    }

    while(~scanf("%d",&N) && N>=3)
    {
        printf("%lld\n",dp[N]);
    }
}

 

以上是关于UVA11401-Triangle Counting-递推的主要内容,如果未能解决你的问题,请参考以下文章

UVa 11401 Triangle Counting (计数DP)

计数UVA11401 Triangle Counting

uva11401 Triangle Counting

setInterval的基本用法

排序专题-插入排序

Git-从远程仓库克隆