私のPrecalcの先生は、彼が作成した(またはxkcdに触発されて盗んだ可能性が高い)彼のお気に入りの問題の1つを抱えています。「チェックメイト」とは、すべての小便器がすでに使用されているか、隣に使用済みの小便器がある状況です。たとえば、人がの場合、n
X
X-X--X
チェックメイトと見なされます。人はすでに占有されている小便器の隣にある小便器を占有できないことに注意してください。
仕事
プログラムはstdin
、、コマンドライン引数、または関数引数を介して数字を受け取ります。プログラムは、入力された小便器の数でチェックメイトが発生する可能性のある方法の数を出力または返します。
例
0 -> 1
(ヌルケースチェックメイトとしてカウント)
1 -> 1
(X
)
2 -> 2
(X-
または-X
)
3 -> 2
(X-X
または-X-
)
4 -> 3
(X-X-
、-X-X
またはX--X
)
5 -> 4
(X-X-X
、X--X-
、-X-X-
、または-X--X
)
6 -> 5
(X-X-X-
、X--X-X
、X-X--X
、-X--X-
または-X-X-X
)
7 -> 7
(X-X-X-X
、X--X-X-
、-X-X--X
、-X--X-X
、X-X--X-
、X--X--X
または-X-X-X-
)
8 -> 9
(-X--X--X
、-X--X-X-
、-X-X--X-
、-X-X-X-X
、X--X--X-
、X--X-X-X
、X-X--X-X
、X-X-X--X
、X-X-X-X-
)
...
得点
バイト単位の最小プログラムが優先されます。
''
。これは、階乗および順列の場合と同じです、0!=1。0個のアイテムを配置する方法は1つだけです。