2016-07-05 3 views
-1

어떻게하면 다음 문제를 더 작은 부분으로 분해해야합니까?나무를 만들고 모든 가지 추출하기

내가 식당을 소유하고 있고 오늘의 메뉴를 디자인하고 싶다고 가정 해 보겠습니다.

간단한 예를 들어, 나는 재료의 3 종류가 있습니다 야채 (토마토, 감자, 상추) 탄수화물 (밥, 파스타, 빵) 고기 (돼지 고기, 닭고기, 쇠고기)

편집 :에서 실제로, 성분 및 성분 유형의 불명 한 양이있다. 사용할 수있는 모든 요리의 목록을 만들고 싶습니다. 상기 예를 사용하여, 각각의 접시는 3 가지 유형의 성분 모두를 가져야한다. 토마토 - 파스타 - 닭고기, 감자 - 빵 - 쇠고기.

기본적으로 내 접근 방식은 이것을 트리로 처리하고 DFS를 처리하는 것입니다. 트리가 통과 할 때 분기 객체를 생성하고 트리의 맨 아래에 도달 할 때까지 각 노드를 분기 객체에 추가 한 다음 모든 노드가 통과 할 때까지 새 분기를 만듭니다. 이 조합을 나열합니다

       Meals 
        /   |     \ 
       Tomatoes   Potatoes   Lettuce 
      / | \  / | \   / | \ 
     Rice Pasta Bread Rice Pasta Bread Rice Pasta Bread 
    / | \ 
    Beef Pork Chicken 
+0

감자는 수화물이지만 야채는 아닙니다.하지만 하 XML을 사용하여 이것을 고려 했습니까? –

+0

하하 좋은 소리, 고마워. 데이비드. 내 생물학을 다듬어야 해. 저는 이것을 수행하기 위해 기존 도구/라이브러리를 사용해야한다는 것을 알고 있습니다. 그러나 학습을 위해서, 나는 스스로 이것을 잠재적으로 구현할 수있는 방법을 연구하고 싶어합니다. – learningnewthings

+0

각 메뉴 구성 요소 (veg, carb, meat)에 대해 트리플 중첩 된 'For' 루프를 사용하여 옵션을 탐색 할 수 있습니다. 27 가지 조합이 가능합니다. Microsoft XML, v6.0 라이브러리를 사용하고 XML 문서로 빌드합니다. –

답변

0

: 내가 XML 라이브러리를 사용하는 것이 비록 이상적으로

tomatoes-rice-pork 
tomatoes-rice-chicken 
tomatoes-rice-beef 
tomatoes-pasta-pork 
tomatoes-pasta-chicken 
tomatoes-pasta-beef 
tomatoes-bread-pork 
tomatoes-bread-chicken 
tomatoes-bread-beef 
potatoes-rice-pork 
potatoes-rice-chicken 
potatoes-rice-beef 
potatoes-pasta-pork 
potatoes-pasta-chicken 
potatoes-pasta-beef 
potatoes-bread-pork 
potatoes-bread-chicken 
potatoes-bread-beef 
lettuce-rice-pork 
lettuce-rice-chicken 
lettuce-rice-beef 
lettuce-pasta-pork 
lettuce-pasta-chicken 
lettuce-pasta-beef 
lettuce-bread-pork 
lettuce-bread-chicken 
lettuce-bread-beef 

:이 같은 당신 출력을 줄 것이다

Const vegetables$ = "tomatoes,potatoes,lettuce" 
Const carbs$ = "rice,pasta,bread" 
Const meats$ = "pork,chicken,beef" 

Dim v, c, m, i As Long 

For Each v In Split(vegetables, ",") 
    For Each c In Split(carbs, ",") 
     For Each m In Split(meats, ",") 
      Debug.Print v & "-" & c & "-" & m 
     Next 
    Next 
Next 

그래서 아래 같이 보입니다 이것을 XML 객체로 만들려면 파일 등에 쉽게 그 내용을 쓸 수 있습니다.

관련 문제