Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2009, 17:33   #1
Taisja
Пользователь
 
Регистрация: 31.05.2008
Сообщений: 25
Печаль Не знаю как решить задачку на строки в java, помогите пожалуйста.

Java стали недавно изучать, строки дали на самостоятельное изучение, не могу в них разобраться. Подскажите хотя бы идею решения. Как строку на символы разделить? Как символы скомбинировать?
Дана строка не более чем из 6 произвольных различных символов. Разработать программу вывода всех возможных подстрок, составленных из символов данной строки.
Taisja вне форума Ответить с цитированием
Старый 01.04.2009, 18:07   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Java не стоит, поэтому пример показать не могу (только если вы си не знаете).
Вот алгоритм:
решаем через рекурсию.
Пускай будет не 6 символов, а N. (удобнее и универсальнее).
У нас будут 2 строки (одна исходная - str, вторая под буфер - buf).
Читаем исходную строку в str.

Вызываем функцию fun(str, buf, 0).

Функция fun:
Принимает исходную строку, текущую строку (ту, что уже успели сформировать) и номер текущего символа.
Объявляем пару счетчиков (i,j), временную строку tmp и булеву переменную b (можно и целого типа, но так удобнее).

Если k == N (то есть номер текущего символа равен количеству символов), значит мы уже сформировали строку и ее нужно вывести (и выйти из функции).

Если нет:
Идем в цикле от 0 до N:
Код:
for(i=0;i<N;i++)
i - номер символа в исходной строке, который мы попытаемся подставить.
Нужно проверить, не использовали ли мы его раньше.
Код:
for(b=false,j=0;j<k;j++)
    if(str[i]==buf[j]) b=true;
   if(b) continue;
Копируем строку buf в tmp.
Затем вставляем новый символ:
Код:
tmp[k] = str[i];
И вызываем себя рекурсивно:
Код:
fun(str,tmp,k+1);
Насколько я помню, в java доступ символу строки не через квадратные скобки, а через charAt
то есть str.charAt(5) - доступ к 6-му символу.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачку (строки) Людик Паскаль, Turbo Pascal, PascalABC.NET 4 22.12.2008 17:45
помогите, пожалуйста, решить задачку vol1 Паскаль, Turbo Pascal, PascalABC.NET 3 08.01.2008 21:09
Помогите решить задачку на строки в Паскале. TakeR Помощь студентам 8 26.12.2007 00:09
Пожалуйста, помогите решить задачку. Cizen Помощь студентам 9 03.07.2007 08:27