通过控制台应用程序中的空格创建单词的所有组合

时间:2013-04-07 01:17:27

标签: vb.net console

我正在尝试使用这个http://gyazo.com/8190a3c98a520bbeb77335e05ea5a636(一个可视化的基本控制台应用程序)。我希望它允许用户输入一个单词,并让控制台以可能的所有间隔组合回复它,所以:

假设我正在使用单词TEST,例如它会像这样间隔开来创建:

T EST
T E ST
T E S T
TE ST
TES T
T ES T

依此类推......(例如每个组合都可以用多个空格隔开)

这可以通过控制台应用程序实现吗?

1 个答案:

答案 0 :(得分:0)

计算时,从最低位开始。您从零开始,然后计算直到达到该数字的最高值,如下所示:0, 1, 2, 3, 4, 5, 6, 7, 8, 9。然后,一旦达到最高值,就必须添加第二个数字(例如10)。然后,在再次递增第二个数字(例如20)之前,再次从最低位到最高位(例如10 - 19)。这样,一旦到达999,您就会以三位数字列出每个可能的值组合。

以二进制计数时,它的工作方式相同,但每个数字的最高值为1,因此您可以按照这样的最低位数进行计数:0, 1。然后你必须添加第二个数字并再次计数:10, 11。然后你需要添加第三个数字(例如100)并在前两个数字上再次完成。到达111时,您将在三位二进制数中列出1和0的每个可能组合。

因此,如果您将每个字母之间的空格视为二进制数字中的数字,其中0表示没有空格而1表示存在空格,那么您所要做的就是从0开始计数到最高值在二进制数字中,与单词长度相同的位数减去1.因此,例如,使用单词TEST,计数将如下所示:

  • 000 = TEST
  • 001 = TES T
  • 010 = TE ST
  • 011 = TE S T
  • 100 = T EST
  • ...