0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ARC061 C - たくさんの数式をPythonで実装

Last updated at Posted at 2021-08-23

目的

AtCoder 版!蟻本 (初級編)で「たくさんの数式」で躓いたので理解したことを備忘録として残す。

問題

1 以上 9 以下の数字のみからなる文字列Sが与えられます。 この文字列の中で、あなたはこれら文字と文字の間のうち、いくつかの場所に + を入れることができます。 一つも入れなくてもかまいません。 ただし、+ が連続してはいけません。

このようにして出来る全ての文字列を数式とみなし、和を計算することができます。

ありうる全ての数式の値を計算し、その合計を出力してください。

s = input()
n = len(s)

def dfs(i, f):
    if i == (n - 1):
        return sum(list(map(int, f.split("+"))))
    return dfs(i + 1, f + s[i + 1]) + dfs(i + 1, f + "+" + s[i + 1])

print(dfs(0, s[0]))

実装内容

dfs(0, s[0]) を呼び出した時の様子を図示してみます。s = "125"なので、図ではs[0]を文字列の"1"として表してます。同様に、s[1]を文字列の"2"、s[2]を文字列の"5"として表してます。再帰的にdfsを呼び出すことで、総和を得ていることがわかります。

図1.png

参照

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?