回答編集履歴

4

確認サイトを追記

2018/11/08 01:57

投稿

can110
can110

スコア38266

test CHANGED
@@ -17,6 +17,8 @@
17
17
  「1~残ポイント数ずつひいていって0ポイントになるまで次の値を求めていく」という考え方をします。
18
18
 
19
19
  たとえば以下のようなコードになります。
20
+
21
+ [Online Python Tutor](http://www.pythontutor.com/)などで実際に動かして動作を追ってみてください。
20
22
 
21
23
  ```Python
22
24
 

3

修正

2018/11/08 01:57

投稿

can110
can110

スコア38266

test CHANGED
@@ -1,10 +1,12 @@
1
- まず、Aの初期値が正値の場合、例示された漸化式なら常に1ポイントずつ利用していくのが解となります(切り捨て操作が入るけど結果に影響ないだろう)
1
+ ~~まず、Aの初期値が正値の場合、例示された漸化式なら常に1ポイントずつ利用していくのが解となります(切り捨て操作が入るけど結果に影響ないだろう)~~
2
+
3
+ すみません。初期値A=70などでは切り捨て影響して最適解ではなくなりますね。 2018/11/08 08:52修正
2
4
 
3
5
  理由は説明できませんが、複利で効いてくるローンなどの利率計算と同じと考えてよいと思います。
4
6
 
5
7
 
6
8
 
7
- しかしもし漸化式がもっと複雑だったり単調増加しないものであれば、ご推察のとおり全探索をする必要がでてきます。
9
+ ~~しかしもし漸化式がもっと複雑だったり単調増加しないものであれば、~~ご推察のとおり全探索をする必要がでてきます。
8
10
 
9
11
  その場合、ちょっと紙に書いて数え上げれば分かる通り、2^(N-1)通りの組み合わせが存在します。ここでN=ポイント数です。
10
12
 

2

場合の数の修正

2018/11/07 23:54

投稿

can110
can110

スコア38266

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  しかしもし漸化式がもっと複雑だったり単調増加しないものであれば、ご推察のとおり全探索をする必要がでてきます。
8
8
 
9
- その場合、ちょっと紙に書いて数え上げれば分かる通り、2^N通りの組み合わせが存在します。ここでN=ポイント数です。
9
+ その場合、ちょっと紙に書いて数え上げれば分かる通り、2^(N-1)通りの組み合わせが存在します。ここでN=ポイント数です。
10
10
 
11
11
  この組み合わせの素朴な探索方法、すなわち解き方としては[深さ優先探索](https://ja.wikipedia.org/wiki/%E6%B7%B1%E3%81%95%E5%84%AA%E5%85%88%E6%8E%A2%E7%B4%A2)というアルゴリズムが適しています。
12
12
 

1

追記

2018/11/07 22:54

投稿

can110
can110

スコア38266

test CHANGED
@@ -9,6 +9,10 @@
9
9
  その場合、ちょっと紙に書いて数え上げれば分かる通り、2^N通りの組み合わせが存在します。ここでN=ポイント数です。
10
10
 
11
11
  この組み合わせの素朴な探索方法、すなわち解き方としては[深さ優先探索](https://ja.wikipedia.org/wiki/%E6%B7%B1%E3%81%95%E5%84%AA%E5%85%88%E6%8E%A2%E7%B4%A2)というアルゴリズムが適しています。
12
+
13
+ これは「まずは足して10になる組み合わせを全て列挙」とは逆の発想で
14
+
15
+ 「1~残ポイント数ずつひいていって0ポイントになるまで次の値を求めていく」という考え方をします。
12
16
 
13
17
  たとえば以下のようなコードになります。
14
18