Дайте подсказку направление решения (хорошего, правильного). В коментариях искал, ничего нет, кроме банальных ручных решений, работающих только на 3 слова.
package com.javarush.task.task03.task0313;
/*
Мама мыла раму
*/
import java.util.Arrays;
public class Solution {
public static void main(String[] args) {
//напишите тут ваш код
String base [] = {"Мама", "Мыла", "Раму"};
perm(base, 0);
}
public static void perm(String[] arr, int k){
if (k==arr.length) {
printstr(arr);
}
else {
int xrange[] = new int [arr.length-k];
for (int i=k, n=0; i<arr.length; i++,n++) {
xrange[n]=i;
}
for (int i=0; i<xrange.length; i++) {
String z;
z=arr[k];
arr[k]=arr[xrange[i]];
arr[xrange[i]]=z;
perm(arr, k+1);
z=arr[k];
arr[k]=arr[xrange[i]];
arr[xrange[i]]=z;
}
}
}
public static void printstr(String[] arr){
String testString="";
for (int i=0; i<arr.length; i++) {
testString = testString + arr[i];
}
System.out.println(testString);
}
}