必须以n结尾时等差数列的个数,总共的等差数列个数,就是必须以每个点结尾的个数之和。
#include
#include
#include
using namespace std;
int numberof(const vector nums)
{
if (nums.size() < 3)
return 0;
int n = static_cast(nums.size());
vector dp(n);
dp[0] = 0;
dp[1] = 0;
for (int i = 2; i < n; i++)
{
dp[i] = nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2] ? dp[i - 1] + 1 : 0;
}
return accumulate(dp.begin(), dp.end(), 0);
}
int main()
{
cout << numberof({1, 2, 3, 4, 5}) << endl;
return 0;
}