// Dynamic Programming
using System.IO;
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello, World!");
int val = 12;
int[] table = new int[val+1];
table[0] = 0;
for (int i=1; i<=val; i++){
int maxsqrt = (int) Math.Sqrt(i);
int localmin = i;
for (int j=1; j<=maxsqrt; j++){
if (table[i-j*j] < localmin) {
localmin = table[i-j*j];
}
}
table[i] = localmin + 1;
}
Console.WriteLine("Min Val:"+ table[val]);
}
}
Я нашел это решение в режиме онлайн для следующей задачи:Может кто-нибудь объяснить мне этот код
Учитывая ряд «п», найти наименьшее число безупречного квадратных чисел суммы, необходимой для получения «п»
Пример: n = 12, возврат 3 (4 + 4 + 4) = (2^2 + 2^2 + 2^2) NOT (3^2 + 1 + 1 + 1) n = 6, return 3 (4 + 1 + 1) = (2^2 + 1^2 + 1^2)
Я не могу понять код.
Где именно вы застряли? Какая линия вам непонятна? –
@ AndyKorneyev Я не могу понять функциональность внутренней j-петли –