Все возможные комбинации массива

У меня есть массив строк

{"ted", "williams", "golden", "voice", "radio"}

, и мне нужны все возможные комбинации этих ключевых слов в следующей форме:

{"ted",
 "williams",
 "golden", 
 "voice", 
 "radio",
 "ted williams", 
 "ted golden", 
 "ted voice", 
 "ted radio", 
 "williams golden",
 "williams voice", 
 "williams radio", 
 "golden voice", 
 "golden radio", 
 "voice radio",
 "ted williams golden", 
 "ted williams voice", 
 "ted williams radio", 
 .... }

Я часами работал без эффективного результата (побочный эффект высокоуровневого программирования ??).

Я знаю, что решение должно быть очевидным, но я застрял, честно! Решения на Java / C # принимаются.

РЕДАКТИРОВАТЬ :

  1. Это не домашнее задание
  2. " ted williams "и" williams ted "считаются одинаковыми, поэтому я хочу только" ted williams "

EDIT 2 : после просмотра ссылки в ответе выясняется, что пользователи Guava могут использовать метод powerset в com.google.common.collect.Sets

17
задан Scott Chamberlain 26 March 2013 в 15:27
поделиться