Как применить динамическое программирование в SPOJ Feynman?

Я решал эту проблему -> http://www.spoj.com/problems/SAMER08F/ (Очень простая проблема) … Получил AC с первого раза … Мое решение было таким (довольно простым):

#include<iostream>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
while(n!=0)
{
printf("%d",((n)*(n+1)*((2*n)+1))/6);
printf("\n");
scanf("%d",&n);
}
return 0;
}

Я просматривал этот список http://ahmed-aly.com/Category.jsp?ID=33 и я обнаружил, что Фейнман указан как проблема DP … Я новичок в DP и не могу понять, как эта проблема состоит из подзадач. Любая помощь или подсказка в поиске повторяющихся отношений будет очень полезна.

0

Решение

Это просто глупый DP.
Что вы делаете здесь   формула право?
Вместо этого вы можете создать массив для хранения суммы квадратов (назовем это sumSquares). Теперь, вот как бы вы заполнили массив:

  1. sumSquares [0] = 0; (Базовый случай, сумма квадратов первого
    ноль элементов это ноль).

  2. sumSquares [i] = sumSquares [i — 1] + формула (Сумма квадратов
    из я элементы это сумма квадратов (я — 1) элементы + квадрат Ith
    элемент)

И это все! Вы повторяете до n, и ваш ответ хранится в sumSquares [n]!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]