作者wildcupid (小渔歌)
看板C_Sharp
标题[问题] 一个递回问题
时间Sun Feb 19 23:26:09 2012
今天在写一个想破脑袋还是写不出来
希望有神人可以帮帮我
以下是一个小例子
假设有三堆东西
每一堆里面的东西都不一样且数量也不同
例如第一堆有 苹果 橘子
第二堆有 芭乐
第三堆有 西瓜 柠檬
(以上每堆中的水果都各一个)
然後我现在想做的事情就是从每一堆中选一个水果出来
也就是想要求出所有的组合
所以会有 苹果 芭乐 西瓜
苹果 芭乐 柠檬
橘子 芭乐 西瓜
橘子 芭乐 柠檬
这四种结果
这应该是递回的写法吧?
但是实在很没头绪...
以下用简单的语法举例 希望有神人帮忙
int[,] allFruits;
//↑放所有的水果,也就是每一堆的每一种水果,因为每一堆的数量不同
//所以有些位置会是空的,所以我就藉下面的那个变数来记录每一堆有几种水果
int[] numFruitsOfEachBasket;//记录每一堆有多少种水果
int[] oneCombination; //size = 堆数
List<int[]> fruitsConbinations;//存放所有组合
C#新手感谢帮忙
ps.目前的问题堆数是固定的,但是每堆里头的水果种类会变
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.37.49
1F:→ kinwind:如果只是要"组合" 应该不用算数量吧,只要算种类 02/19 23:52
※ 编辑: wildcupid 来自: 140.112.37.49 (02/20 00:11)
2F:→ wildcupid:我说的数量是每一堆的水果种类数量 02/20 00:12
3F:→ wildcupid:想说跑回圈应时应该会需要知道每一堆有几种水果 02/20 00:13
4F:推 qwer820404:第二句话是对的 第一句话怪怪的 水果的种类有几种吧 02/20 00:18
5F:→ qwer820404:如果不用递回 用二层式的ArrayList就可以做到了 02/20 00:19
6F:→ ssccg:最直觉的方法不就每堆一层回圈就好? 02/20 00:40
7F:→ ssccg:递回不会比较快也不会比较好写吧? 02/20 00:41
8F:推 qwer820404:我有写出来了 但是真的没有比较好写.... 02/20 05:34
9F:→ qwer820404:不过如果是要做到动态的话 递回是必然的. 02/20 05:35
10F:→ qwer820404:我的方式是 你列有限堆数 把他画成树的图形 02/20 05:36
11F:→ qwer820404:那就会有level(字母顺序) 跟count(每阶的种类) 02/20 05:36
12F:→ qwer820404:用这概念下去写 从最顶层切进去 就好了 02/20 05:37
13F:→ qwer820404:如果要code的话 请寄信给我附上你的email 02/20 05:37
15F:→ wildcupid:高手好多!!! 02/21 13:14
※ 编辑: wildcupid 来自: 140.112.37.49 (02/21 13:15)