【发布时间】:2016-08-19 23:15:06
【问题描述】:
我让用户输入以下格式的字符串:
示例 1:A、B、C | 1,2,3 | a,b,c
示例 2:A,B | C,D | E | F,G
我想写出所有可能的组合,例如:
例如 1 的可能输出:
A,1,a A,2,a A,3,a
A,1,b A,2,b A,3,b
A,1,c A,2,c A,3,c ... and so on
示例 2 的可能输出:
A,C,E,F B,C,E,F
A,C,E,G B,C,E,G
A,D,E,F B,D,E,F
A,D,E,G B,D,E,G ... and so on
我的问题是 | 字符的数量不是恒定的,因此我不能只编写固定数量的嵌套 for 循环,我不能硬编码。
这些输入字符串实际上是命令的参数。最后,我不打算只在控制台上输出这些组合。我想发送如下命令:COMMAND A 1 a、COMMAND A 1 b 等。
我不是在寻找可以复制和粘贴的代码。我只是无法得到我遇到的这个问题背后的算法。
我尝试了很多不同的 for 循环,但没有任何效果,而且我觉得我的方法离解决方案越来越远,所以我只需要有人为我指出正确的方向,以便我理解这个概念并在一天结束时,我仍然需要编写自己的代码才能得到我想要的。
【问题讨论】:
-
我在这里看不到任何 for 循环!你有没有尝试过?
-
你真的得到这样的字符串:
A,B,C | 1,2,3 | a,b,c? -
你可以使用 'split' 分隔成不同的数组,然后知道有多少 '|'有……
-
@BugFinder 我试过了,我使用嵌套的 for 循环,外循环拆分
|和内循环拆分,但这绝对是错误的。我的大脑无法理解这个算法,这就是我问的原因。我知道我在这里遗漏了一个关键点,我认为需要一个动态嵌套循环,我根本不知道如何。 -
@S.Akbari 是的。我不是在这里询问基本的 for 循环问题,我需要循环的数量是动态的。老实说,我根本没有什么可展示的。我什至不知道采取哪种方法(感谢一些答案,现在我知道我应该尝试递归)