제조 환경에서 사용할 간단한 학교용 소프트웨어를 개발해야합니다. 2^n 조합에서 가장 좋은 순서 찾기
이
는 시나리오 :내가 크기의 목록을 제공하고 있습니다 - 예를 들어 내가 24 "X 30"보드, 30 "X 30", 30 "의 X가 각각의 크기는, 보드를 반영 48 "등등. 이 보드는 원자재를 자르는 과정의 부산물입니다.
원료는 두 가지 유형의 보드 크기 (60 "x 120"및 48 "x 96")로 제공됩니다.
그들은 원료에서 판재를 자르기위한 최선의 방법을 알고 싶어합니다. "가장 좋은"방법은 원료와 잔류 물이 가장 적은 방법으로 정의됩니다. 그들은 또한 사용될 원재료의 양을 알고 싶어합니다. 예를 들어 30 "60"x 120 "의 보드와 48"x 96 "3의 보드.
보드를 수평 또는 수직으로 절단 할 수 있습니다. 즉, 24 "x 30"을 24 "x 30"또는 30 "x 24"로자를 수 있습니다.
전체적으로 (같은 크기 일 수도있는) 총 50 개의 보드가 제공되는 경우 2^50 가지 조합을 사용할 수 있습니다. 이것은 수천 개의 다른 소프트웨어에서 소프트웨어를 실행하기 때문에 너무 길어 보입니다. 보드 크기.
누구나이 시나리오에 적합한 알고리즘을 알고 있는지 궁금합니다.
감사합니다.
동적 프로그래밍 사용 –
추가 세부 사항이 필요합니다. 첫째로, 당신은 "단두대"삭감 (모든 방법 좌우로)을 할 수 있습니까 또는 당신은 보드 중간에 중지 상처를 할 수 있습니까? 둘째, 분명히 그들은 각 크기의 보드를 몇 개 잘라야 하는지를 말했습니다. 그렇지? – AnT
예. 단두대 절단 만 허용됩니다. 예, 그들은 필요한 수량과 크기를 제공하며 각 크기에서 보드의 양과 각 보드를 자르는 올바른 방법을 반환해야합니다. –