我应该如何将以下问题分解为更小的部分?
假设我有一家餐馆,想要设计今晚的菜单。
举个简单的例子,我有3种成分: 蔬菜(西红柿,土豆,生菜) 碳水化合物(米饭,面食,面包) 肉(猪肉,鸡肉,牛肉)
编辑:在实践中,有一定数量的成分和成分类型。 我想列出所有可用的菜肴。使用上面的例子,每个菜应该具有所有3种类型的成分,例如,西红柿 - 大米猪肉,西红柿 - 意大利面 - 鸡肉,土豆 - 面包 - 牛肉。
原则上,我的方法是将其视为一棵树,做一个DFS。创建分支对象,在遍历树时,将每个节点添加到分支对象,直到搜索到达树的底部,然后创建新分支,直到每个节点都经过。所以它看起来像下面这样:
Meals
/ | \
Tomatoes Potatoes Lettuce
/ | \ / | \ / | \
Rice Pasta Bread Rice Pasta Bread Rice Pasta Bread
/ | \
Beef Pork Chicken
答案 0 :(得分:0)
这将列出组合:
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
这将为您提供如下输出:
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
理想情况下,虽然我会使用XML库将其构建为XML对象,但您可以轻松地将其写入文件等。