アルゴリズム(Python)
1627 ワード
1247.[S/Wトラブルシューティングアプリケーション]3日目-最適なパス
質問リンク
sol 1)
問題にしても、コメントにしても、完全に探索で解決できるので、参加しました.以下同
import time
st = time.time()
import itertools
t = int(input())
for test in range(t):
n = int(input())
xy = list(map(int, input().split()))
start = xy[:2]
end = xy[2:4]
x = [xy[i] for i in range(4, n*2+4) if i%2==0]
y = [xy[i] for i in range(4, n*2+4) if i%2!=0]
arr = [i for i in range(n)]
per = list(itertools.permutations(arr, n))
costlist = []
# 각 순열조합마다 계산
for case in per:
before_x = start[0]
before_y = start[1]
cost = 0
# 순열조합 안에서 고객-고객사이의 거리계산
for i in case:
cost += abs(x[i]-before_x) + abs(y[i]-before_y)
before_x = x[i]
before_y = y[i]
# 마지막 고객 - 집 사이의 거리 비용 계산
cost += abs(end[0]-before_x) + abs(end[1]-before_y)
costlist.append(cost)
print('#{} {}'.format(test+1, min(costlist)))
print(time.time() - st)
私も複雑だと思います.時間制限はPythonの30秒、上のコードは134.210082055413818秒…^^今...?
私はもっと無知ではない解決策を考えるべきだ.
sol 2)DFSによる完全ナビゲーション
DFSFによる完全ナビゲーション
コメントコード
Reference
この問題について(アルゴリズム(Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@ann9902/알고리즘Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol