2013-08-09 2 views
0

DP를 성공적으로 사용하여 문제에 대한 최적의 솔루션을 얻었습니다. 내가 직면하고있는 문제는 솔루션을 재구성하려는 경우 최적의 솔루션을 얻을 수있는 유일한 방법으로 끝납니다. 방법, 최선의 결과로 이어질 수있는 모든 방법/선택을 되돌릴 수있을 것입니까?동적 프로그래밍 : 모든 솔루션 검색

예 : 스킬이 {1, 2, 2, 1} 인 플레이어 a, b, c, d 중에서 팀을 선택하는 경우 해당 팀 스킬 수는 3이 될 수 있으며 가능한 한 가지 방법을 얻을 수 있습니다 이것을 {{a, b}, {c, d}}와 같이 달성하십시오. 내가 찾고있는 것은 팀 스킬 카운트가 3 인 {{a, c}, {b, d}}와 {{a,}}로 팀을 공정하게 분배 할 수있는 모든 방법을 얻을 수있는 방법입니다. b}, {c, d}}

+0

안녕하세요, 분명한 진술에 문제가 있으시면 제공해 주시기 바랍니다. 질문을 이해하는 것이 매우 어렵습니다. 모든 플레이어의 기술 수준을 고려할 때 수행해야 할 작업은 무엇입니까? – Aravind

답변

0

X가 선수의 수이면. (X-1)! 가능한 솔루션 수입니다. 그런 다음 결과가 최적의 팀 스킬과 같은 경우 가능한 해결책으로 for 루프를 사용하여 결과를 배열에 저장할 수 있습니다.

+0

최적의 팀 스킬을 계산하는 데 도움이 필요합니까? 그렇다면 {1, 2, 3, 1}과 같은 상황에서 어떤 종류의 결과를 원하십니까? –

+0

나는 최적의 합계를 얻기 위해 코드를 작성했다. (귀하의 예에서는 4 일 것입니다). 문제를 해결할 수있는 강력한 방법을 제안 하시겠습니까? (가능한 모든 솔루션에서 루프 사용) ?? – user1072192

0

DP의 주요 단계는 하위 문제의 해를 알면 문제의 해결책을 찾는 것입니다. 이는 하위 문제의 최소 (또는 최대) 값을 찾아서 수행됩니다. 이를 통해 문제를 최소 (또는 최대) 값을 가진 하위 문제로 연결하여 유향 그래프를 구성 할 수 있습니다. page의 마지막 이미지에서와 같습니다. 모든 솔루션을 찾으려면 전체 문제의 솔루션에서 가능한 모든 경로를 찾으십시오.

관련 문제