(프로그래밍 수수께끼 같은) 파이썬 문제를 해결하고 싶습니다. 이것은 운동이나 이것과 관련된 것이 아니지만 제가 생각한 어떤 것, 그리고 그것을위한 해결책을 찾고 싶습니다.점수의 기초가되는 변수의 조합 찾기
문제 설명 :
- 의 내가 10 개 개의 서로 다른 작업 위치와 사업을한다고 가정 해 봅시다.
- 각 위치에는 몇 가지 다른 하위 위치가 있습니다. 예를 들어 (공격적, 편한, 보통). 그러나 하위 위치는 모든 위치에서 동일하지 않습니다. 기타에는 1, 기타에는 2, 기타 3이 있습니다.
- 나는 모든 위치와 하위 위치에서 성능 점수가 20 명 있습니다.
비즈니스 생산의 최종 점수는 모든 순위의 각 점수의 합계가됩니다. 가장 높은 점수를 얻는 조합을 찾고 싶습니다.
몇 가지 생각 : 위치가 사람의 수보다 적은 때문에
- 모든 사람들이 일을 얻을 수 없습니다.
- 같은 위치에 두 사람을 가질 수 없습니다.
- 첫 번째 시도은 각 사람들의 최고 점수를 받아 모든 직위를 하나씩 채우는 것이 었습니다. 그러나 이것은 결국 문제로 끝났습니다. 여행 세일즈맨과 비슷한 문제.
그럼 다음 옵션은 무엇입니까? 모든 파이썬 구현 아이디어?
편집 : 몇 가지 더 자세한 내용은 가까운 파이썬
positionslist = [pos1, pos2, pos3, pos4, pos5, pos6, pos7, pos8, pos9, pos10]
subpositions = {"pos1":["A","B"], "pos2":["B","C"],"pos3":["A","B","C"],"pos4":["A"],"pos5":["A","B"],"pos6":["A","B","C"],"pos7":["B"],"pos8":["C"],"pos9":["A","C"],"pos10":["A"]
peoplelist = [{"pos1 A":15,"pos1 B": 8, "pos2 B": 2, "pos2 C": 4, "po3 A": 2, "pos3 B":5...}, {"pos1 A":1, "pos1 B":23,"pos2 B":11,.....},.........]
#run the code
print "best combination:" result
best combination:
pos1 B, person 3, score 23
pos2 C, person 5, score 11
pos3 A, person 18, score ..
pos4
pos5
pos6
pos7
pos8
pos9
pos10
Total Score: ....
에 내가 말했듯이, 의사 코드 내 구현은 다음과 같습니다 그러나
for position in positionlist:
for every sub-position:
find the highest score from every person
find the highest sub-position from the previous step
remove that person from the peoplelist
store the position with the sub-position and the person
,이 세일즈맨 문제와 그것을 여행과 유사 결국 최고의 조합으로 끝나지 않을 것입니다.