Предложение при этом должно иметь тот же смысл и/или быть грамматически согласованным? Или задача в том, чтобы просто получить все возможные комбинации заданных слов?
Если нужно получить просто все перестановки, то:
1) Создаем массив слов из исходного предложения
2) Выбираем алгоритм для перестановки (пример), на каждом шаге выводим результат.