回答編集履歴

4

2018/05/31 11:38の質疑結果を反映

2018/05/31 09:00

投稿

tkturbo
tkturbo

スコア5572

test CHANGED
@@ -28,6 +28,16 @@
28
28
 
29
29
 
30
30
 
31
+ 追記:
32
+
33
+ > 仕様が漏れておりました、ある数値を超える場合は不可となります。
34
+
35
+
36
+
37
+ ↑こちらを反映
38
+
39
+
40
+
31
41
  ```
32
42
 
33
43
  // javascriptで実装
@@ -72,7 +82,9 @@
72
82
 
73
83
  let div = Math.floor(goal / n);
74
84
 
85
+ //for(let i = 1; i < div + 2; i++){ // goalよりも大きい和を含む場合
86
+
75
- for(let i = 1; i < div + 2; i++){
87
+ for(let i = 1; i < div + 1; i++){ // goalよりも大きい和を含まない場合
76
88
 
77
89
  let arr = Array(i).fill(n);
78
90
 

3

ソースコード修正

2018/05/31 09:00

投稿

tkturbo
tkturbo

スコア5572

test CHANGED
@@ -64,7 +64,7 @@
64
64
 
65
65
  // 重複する値を削除
66
66
 
67
- numbers = numbers.sort((n,i,arr)=>{return (i==0)||(arr[i-1]!=n);});
67
+ numbers = numbers.filter((n,i,arr)=>{return (i==0)||(arr[i-1]!=n);});
68
68
 
69
69
 
70
70
 

2

誤字修正

2018/05/31 00:57

投稿

tkturbo
tkturbo

スコア5572

test CHANGED
@@ -64,7 +64,7 @@
64
64
 
65
65
  // 重複する値を削除
66
66
 
67
- numbers = numbers.sort((n,i,arr)=>{return (n==0)||(arr[i-1]!=n);});
67
+ numbers = numbers.sort((n,i,arr)=>{return (i==0)||(arr[i-1]!=n);});
68
68
 
69
69
 
70
70
 

1

numbersに重複値があった場合の処理を追加

2018/05/31 00:56

投稿

tkturbo
tkturbo

スコア5572

test CHANGED
@@ -14,9 +14,9 @@
14
14
 
15
15
  1.numbersを降順に並べ替え
16
16
 
17
- 2.numbersの最初の要素で( goal <= numbers * n )となる最初のnまでの組み合わせを保持するNodeを作成
17
+ 2.numbersの要素で( goal <= number * n )となる最初のn(n>0)までの組み合わせを保持するNodeを作成
18
-
18
+
19
- 3.( goal > number * n )となるNodeだけ、「goal = goal - number * n」「 number = [2で使った要素よりも小さい数で再構成したnumbers]」として、1-3を再帰的に実行
19
+ 3.( goal > number * n )となるNodeだけ、「goal = goal - number * n」「 numbers = [2で使った要素よりも小さい数で再構成したnumbers]」として、1-3を再帰的に実行
20
20
 
21
21
  4.rootNodeから各Nodeまでで保持する数値の組み合わせをすべてリスト化
22
22
 
@@ -62,6 +62,10 @@
62
62
 
63
63
  numbers = numbers.sort((a,b)=>{ return b-a; });
64
64
 
65
+ // 重複する値を削除
66
+
67
+ numbers = numbers.sort((n,i,arr)=>{return (n==0)||(arr[i-1]!=n);});
68
+
65
69
 
66
70
 
67
71
  numbers.forEach((n)=>{