回答編集履歴

1

実例

2015/12/08 16:54

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -7,3 +7,33 @@
7
7
  行数が10行になったとしても、ループ部分が3行でループ回数が100回で済めば
8
8
 
9
9
  307行分の実行時間で済みます。
10
+
11
+
12
+
13
+ 例えば、こんな問題→[セカンド・イクエイション](https://codeiq.jp/magazine/2015/11/31425/)
14
+
15
+
16
+
17
+ 愚直に条件を満たすa,b,cを数え上げようとしたらこんなループになります。
18
+
19
+ ```java
20
+
21
+ for(b = 1; b <= m; b++){
22
+
23
+ for(a = 1; a <= b * b / 4; a++){
24
+
25
+ for(c = 1; c <= b * b / 4; c++){
26
+
27
+ }
28
+
29
+ }
30
+
31
+ }
32
+
33
+ ```
34
+
35
+ bのループでm回分、その中でaのループをbの2乗比例分、さらにcのループをbの2乗比例分、
36
+
37
+ bはmに比例して大きくなるので、トータルmの5乗に比例したループがかかります。
38
+
39
+ このループ回数をなるべく減らすための工夫をこの記事では解説しています。