回答編集履歴
5
コードの修正
test
CHANGED
@@ -16,11 +16,9 @@
|
|
16
16
|
|
17
17
|
{
|
18
18
|
|
19
|
-
if (k < 0) return;
|
20
|
-
|
21
19
|
if (k == 0) len = m = i;
|
22
20
|
|
23
|
-
else if (i < m)
|
21
|
+
else if (k > 0 && i < m)
|
24
22
|
|
25
23
|
for (; j > 0; j--) gen(i+1, j, k - j*j*j);
|
26
24
|
|
4
if の順序を変更し、get の呼び出し回数を減らした
test
CHANGED
@@ -16,13 +16,13 @@
|
|
16
16
|
|
17
17
|
{
|
18
18
|
|
19
|
-
if (
|
19
|
+
if (k < 0) return;
|
20
20
|
|
21
|
+
if (k == 0) len = m = i;
|
22
|
+
|
21
|
-
if (
|
23
|
+
else if (i < m)
|
22
24
|
|
23
25
|
for (; j > 0; j--) gen(i+1, j, k - j*j*j);
|
24
|
-
|
25
|
-
else m = len = i;
|
26
26
|
|
27
27
|
}
|
28
28
|
|
3
無駄なコードの削除
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
for (; j > 0; j--) gen(i+1, j, k - j*j*j);
|
24
24
|
|
25
|
-
else
|
25
|
+
else m = len = i;
|
26
26
|
|
27
27
|
}
|
28
28
|
|
2
マジックナンバーの 10 や 11 を消してみた
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
int n, m, len = 1
|
11
|
+
int n, m, len = -1;
|
12
12
|
|
13
13
|
|
14
14
|
|
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
for (; j > 0; j--) gen(i+1, j, k - j*j*j);
|
24
24
|
|
25
|
-
else if (k == 0 && i <
|
25
|
+
else if (k == 0 && i <= m) m = len = i;
|
26
26
|
|
27
27
|
}
|
28
28
|
|
@@ -36,8 +36,6 @@
|
|
36
36
|
|
37
37
|
gen(0, (int)(cbrt(n) + 0.1), n);
|
38
38
|
|
39
|
-
if (len > 10) len = -1;
|
40
|
-
|
41
39
|
printf("%d\n", len);
|
42
40
|
|
43
41
|
}
|
1
コードの改善
test
CHANGED
@@ -12,17 +12,17 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
void gen(int i, int
|
15
|
+
void gen(int i, int j, int k)
|
16
16
|
|
17
17
|
{
|
18
18
|
|
19
|
-
if (i > m ||
|
19
|
+
if (i > m || k < 0) return;
|
20
20
|
|
21
|
-
if (
|
21
|
+
if (k > 0)
|
22
22
|
|
23
|
-
for (
|
23
|
+
for (; j > 0; j--) gen(i+1, j, k - j*j*j);
|
24
24
|
|
25
|
-
else if (
|
25
|
+
else if (k == 0 && i < len) m = len = i;
|
26
26
|
|
27
27
|
}
|
28
28
|
|