Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/58: Рейтинг темы: голосов - 58, средняя оценка - 4.59
3 / 3 / 3
Регистрация: 11.04.2012
Сообщений: 37

Вывести на экран все возможные комбинации слов «Мама», «Мыла», «Раму»

15.10.2014, 09:52. Показов 11316. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему не работает функция getReplace? и как правильно все это записать?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Solution
{ 
    public static void getReplace(String a, String b)
    {
        String x;
        x=a;
        a=b;
        b=x;
    }
    
    public static void main(String[] args)
    {
        String a="Мама";
        String b="Мыла";
        String c="Раму";
        System.out.println(a+b+c);
        getReplace(b,c);
        System.out.println(a+b+c);
        getReplace(a,b);
        System.out.println(a+b+c);
        getReplace(b,c);
        System.out.println(a+b+c);
        getReplace(a,b);
        System.out.println(a+b+c);
        getReplace(b,c);
        System.out.println(a+b+c);//Напишите тут ваш код
 
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2014, 09:52
Ответы с готовыми решениями:

Как вывести возможные комбинации слов
ДВС! Вот есть допустим 3 слова. Из них нужно составить все возможные комбинации как можно это сделать, я начал так,но дальше не не могу...

Комбинаторика: вывести все возможные комбинации заданных объектов
Добрый день, может кто-нибудь,пожалуйста, написать код для следующей задачи? Поскольку в комбинаторике не разбираюсь совсем. Дано N...

Все возможные комбинации с двух массивов
Есть два массива чисел размером n*n . нужно составить массив все возможных пар. пример: массив 1: 1 2 массив 2: 3 2 На...

5
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
15.10.2014, 10:37
Лучший ответ Сообщение было отмечено Lotesse как решение

Решение

Цитата Сообщение от Lotesse Посмотреть сообщение
Почему не работает функция getReplace?
В Java ссылки на объекты передаются по значению, а не по ссылке.
На вызывающей стороне изменений не будет, если не изменять сам объект по ссылке.

Цитата Сообщение от Lotesse Посмотреть сообщение
и как правильно все это записать?
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
 
public class JavaConsoleSimple {
 
    static void print(Set<String> words, String prefix)
    {
        if (words.isEmpty())
        {
            System.out.println(prefix);
            return;
        }
        Iterator<String> iter = words.iterator();
        while(iter.hasNext())
        {
            String value = iter.next();
            Set<String> nextSet = new HashSet<String>(words);
            nextSet.remove(value);
            print(nextSet, prefix + " " + value);
        }
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Set<String> words = new HashSet<String>();
        words.add("Мама");
        words.add("Мыла");
        words.add("Раму");
        print(words, "");
    }
    
}
1
0 / 0 / 1
Регистрация: 12.02.2018
Сообщений: 157
10.06.2018, 17:43
ДВС! Вот есть допустим 3 слова. Из них нужно составить все возможные комбинации как можно это сделать, я начал так,но дальше не не могу домыслить. И что бы они не повторялись!
Java
1
2
3
4
5
6
7
8
9
10
11
12
    
 
        String [] clear = {"Мама", "Мыла", "Раму"};
        int l = clear.length;
        for (int i = 0; i < l; i++)
         {
            int rand = (int) (Math.random() * l);
            String s = clear[rand];
            System.out.print(s);
        }
 
    }
Добавлено через 2 часа 30 минут
Какие вообще есть варианты и способы решения подобных задач?
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
10.06.2018, 23:53
Случайные слова могут повторятся, это не всевозможные варианты а независимые от предидущих.
Все возможные варианты это тупо перебор. С количества слов М, первое слово выбираете М способами, второе (М-1) третье (М-2).. Количество всех цепочек слов это М!
Ничего лучше перебора к сожалению в голове не приходит.
Представьте таблицу М*М, Где в одной строке одно слово М раз, в другой - другое М раз,
и вам нужно только одно слово со строки. Но есть единственное условие, чтобы позиции разных слов были разные.
Ну а дальше проходите каждую строку своим цыклом (выбрать только одно слово), и все это в цыкле М раз.
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
13.06.2018, 11:32
Java
1
2
3
4
5
6
7
8
public class Main {
    public static void main(String[] args) {
        Permutator<String> permutator = new Permutator<>(new String[]{"Mother", "Washed", "Window"});
 
        while (permutator.hasNext())
            System.out.println(Arrays.deepToString(permutator.next()));
    }
}
Класс Permutator отсюда: Комбинаторика с использованием PermutationIterator
0
Нарушитель
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,498
Записей в блоге: 26
14.06.2018, 00:57
Цитата Сообщение от Lotesse Посмотреть сообщение
Почему не работает функция getReplace? и как правильно все это записать?
Потому что строки не передаются как ссылки. Срока неизменяема.
Даже когда вы пишите:
Java
1
2
String str = "Текст";
str = "Новый текст";
Создается новый объект String.
Вы можете при желании сделать String изменяемым. Но этого делать не рекомендуется.
Вот пример обмена, который работает через рефлекцию.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package myStrings;
import java.lang.reflect.*;
/**
 *
 
 */
public class SwapString {
    public static void main(String[] args) {
        String srtA = new String("Первая строка A");
        String srtB = new String("Вторая строка B");
        swapStrRef(srtA,srtB);
        System.out.println("srtA =  " + srtA +", srtB = " + srtB );
    }
    private static void swapStrRef(String a, String b) {
        try {
            Field val = String.class.getDeclaredField("value");
            
            val.setAccessible(true);    // это должно быть запрещено!!!
 
            char[] temp = (char[])val.get(a);
            val.set(a, val.get(b));
            val.set(b, temp);           // Пожалуйста простите меня
        } catch(NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
        }
    }
    
    
}
Код работает, но такой код не безопасен.
Lotesse, если хотите дописать свой код как вы начали, то для обмена переведите строки во что-то другое, например в массивы, в ArrayList ... и тд. и сделайте обмен.

Добавлено через 49 минут
Еще как вариант, создать ссылки на строки и менять их местами.
Например так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package myStrings;
 
import java.util.concurrent.atomic.AtomicReference;
 
/**
 *
 * @author vvm
 */
public class SwapRef {
    public static void main(String[] args) {
        
        String s1 = "мама";
        String s2 = "мыла";
        
        AtomicReference<String> srtRef1 = new AtomicReference<>(s1);// ссылка на первую строку
        AtomicReference<String> srtRef2 = new AtomicReference<>(s2);// ссылка на вторую строку
        srtRef1.set(srtRef2.getAndSet(srtRef1.get())); // обмен
        
        System.out.println("srtRef1 = " + srtRef1 + " srtRef2 = " + srtRef2 );
    }
}
Добавлено через 1 час 13 минут
Вот. Еще придумал как сделать. Тут я делаю класс обертку обмена строк WrSwp.
Обертываю строки и поочередно вызываю обмен:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
 
 */
package myStrings;
 
/**
 *
 * @author vvm
 */
/* класс обертка для обмена строк*/
 class WrSwp<T> {
      public WrSwp(T obj) {
             val_ = obj;
      }
      public T get() { return val_; }
      public void set(T value) { val_ = value; }
      public void swap(WrSwp<T> o) {
           T tmp = o.val_;
           o.val_ = val_;
           val_ = tmp;
      }
      private T val_ = null;
  }
 
public class WrapperSwaper {
    public static void main(String[] args) {
        String a ="мама", b = "мыла",  c = "раму";
        
        WrSwp<String> sw1 = new WrSwp(a); // обертка первой строки
        WrSwp<String> sw2 = new WrSwp(b); // обертка второй  строки
        WrSwp<String> sw3 = new WrSwp(c); // обертка третьей строки
        
          
         // пошагово:
          showWrSwp(sw1, sw2, sw3 ); // показать 
          sw1.swap(sw2); // обмен 1 - 2 
          showWrSwp(sw1, sw2, sw3 ); // показать 
          sw2.swap(sw3);// обмен 2 - 3
          
          showWrSwp(sw1, sw2, sw3 ); // показать 
          sw1.swap(sw2); //обмен 1- 2
          showWrSwp(sw1, sw2, sw3 ); // показать 
          sw2.swap(sw3);// обмен 2 - 3
          
          showWrSwp(sw1, sw2, sw3 ); // показать 
          sw1.swap(sw2); // обмен 1 - 2
          showWrSwp(sw1, sw2, sw3 ); // показать  
           
        
         
    }
     /* показать обертки */
    private static void showWrSwp(WrSwp<String> sw1,WrSwp<String> sw2,WrSwp<String> sw3 ){
        System.out.print(sw1.get()+" " + sw2.get()+" "+ sw3.get() );
        System.out.println("");
    }
}
Вывод:
run:
мама мыла раму
мыла мама раму
мыла раму мама
раму мыла мама
раму мама мыла
мама раму мыла
BUILD SUCCESSFUL (total time: 1 second)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.06.2018, 00:57
Помогаю со студенческими работами здесь

Найти все возможные комбинации по n элементов массива
задание есть массив из k елементов, нужно найти все возможные комбинации по n элементов этого массива(без перестановок и повторения одного...

Написать программу в которой нужно ввести строку "Мама мыла раму", и в другой строке(в новой) вывести слова в обратном порядке т.е "Раму мыла мама"
Написать программу в которой нужно ввести строку &quot;Мама мыла раму&quot;, и в другой строке(в новой) вывести слова в обратном порядке т.е...

ввести строку и поменять местами "мама мыла раму" на "раму мыла мама"
ввести строку и поменять местами &quot;мама мыла раму&quot; на &quot;раму мыла мама&quot;

Определить положение слова 'мама' в строке 'мама мыла раму'
люди помогите плиз решить задачку. Определить состояние слова 'мама' в строке 'мама мыла раму'.

Заменить в строке "Мама мыла раму" буквы "а" на знак "_" . Вывести полученный массив на экран
Заменить в строке &quot;Мама мыла раму&quot; буквы &quot;а&quot; на знак &quot;_&quot; . Вывести полученный массив на экран. (PascalABC.Net)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru