[補助]DFS:14888挿入演算子(BaekJoon)
質問リンク
▼▼▼▼草
与えられた演算値は、+がx個〜y個に等しい形式で与えられる.この問題をDFSバックトラックでどのように解決すればいいか分かりません.
通常のDFSのようにするために、アクセスチェックのために数値ごとに配列を作成しました.
🛠 マイコード与えられた演算子の形状を保つために、演算子の個数をパラメータに渡すことで解く方法がある.->下記リンク参照 🎈 リファレンスrebasあなたのブログ これが就職のためのコードテストwith python
▼▼▼▼草
与えられた演算値は、+がx個〜y個に等しい形式で与えられる.この問題をDFSバックトラックでどのように解決すればいいか分かりません.
通常のDFSのようにするために、アクセスチェックのために数値ごとに配列を作成しました.
🛠 マイコード
def DFS(index, val):
global mx, mn
if index == n-1:
mx = max(mx, val)
mn = min(mn, val)
return
for i in range(len(oper)):
if check[i]:
continue
check[i] = True
if oper[i] == 0:
DFS(index + 1, val + num[index+1])
elif oper[i] == 1:
DFS(index + 1, val - num[index+1])
elif oper[i] == 2:
DFS(index + 1, val * num[index+1])
else:
DFS(index + 1, val//num[index+1] if val > 0 else -((-val)//num[index+1]))
check[i] = False
n = int(input())
num = list(map(int, input().split()))
operator = list(map(int, input().split()))
oper = []
for i in range(len(operator)):
for j in range(operator[i]):
oper.append(i)
check = [False]*len(oper)
mx = int(-1e9)
mn = int(1e9)
sm = num[0]
DFS(0, sm)
print(mx)
print(mn)
📝 整理するReference
この問題について([補助]DFS:14888挿入演算子(BaekJoon)), 我々は、より多くの情報をここで見つけました https://velog.io/@pyh8618/이코테-DFS-14888-연산자-끼워넣기BaekJoonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol