41 lines
649 B
Text
41 lines
649 B
Text
|
|
|
||
|
|
int program(int argc, string[] argv) {
|
||
|
|
var n = 500;
|
||
|
|
return leastsquare(n);
|
||
|
|
}
|
||
|
|
|
||
|
|
/*finds the least number of squares to sum up to n*/
|
||
|
|
|
||
|
|
int leastsquare(int n) {
|
||
|
|
var cache = new int[]{n+1};
|
||
|
|
cache[0] = 0;
|
||
|
|
cache[1] = 1;
|
||
|
|
cache[2] = 2;
|
||
|
|
cache[3] = 3;
|
||
|
|
for (var i = 4; i < n + 1; i=i+1;) {
|
||
|
|
/*set to some arbitrary high number*/
|
||
|
|
cache[i] = i;
|
||
|
|
|
||
|
|
for (var k = 1; k < n; k = k + 1;) {
|
||
|
|
var temp = k*k;
|
||
|
|
if (temp > i) {
|
||
|
|
|
||
|
|
} else {
|
||
|
|
cache[i] = min(cache[i], 1 + cache[i - temp]);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return cache[n];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
int min(int y, int x) {
|
||
|
|
if (x > y) {
|
||
|
|
return y;
|
||
|
|
} else {
|
||
|
|
return x;
|
||
|
|
}
|
||
|
|
}
|