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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2017, 15:07   #1
artems67
Пользователь
 
Регистрация: 17.11.2015
Сообщений: 62
Восклицание Возникли проблемы с алгоритмом для строки в C#

Здраствуйте,

ТЗ

Дана строка не более чем из шести произвольных различных символов. Разработать программу вывода всех возможных подстрок, составленных из символов данной строки

Я понял идею так:

Вводится строка, например: вуз

И выводится всевозможные подстроки этой строки:

в
у
з
ву
ув
уз
зу

Но не могу придумать алгоритм реализации. Чтобы он подходил и для строки из 6 символов.

Может кто сможет подсказать по какой схеме(алгоритму) реализовать эту программу ? Заранее спасибо.
artems67 вне форума Ответить с цитированием
Старый 26.10.2017, 16:26   #2
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

"ув" и "зу" это точно подстроки?
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 26.10.2017, 17:07   #3
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Код:
            string s = "abcdef";
            for (int i = 0; i < s.Length; i++)
                for (int j = i + 1; j < s.Length; j++)
                    Console.WriteLine(s.Substring(i, j - i));
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 26.10.2017, 17:10   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Plague Посмотреть сообщение
"ув" и "зу" это точно подстроки?
и если да.
тогда где в примере "вз" "зв" ?

и ещё, а что делать, если в исходной строке заданы повторяющиеся символы?
ну, например, слово МАМА ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.10.2017, 11:21   #5
artems67
Пользователь
 
Регистрация: 17.11.2015
Сообщений: 62
По умолчанию

Всё я уже сам сделал. Условие немного я не так понял. Нужно просто из слова анаграммы составить.

Serge_Bliznykov, а слово "МАМА" использовать нельзя по условию. Так как вводятся до 6 произвольных различных символов.
artems67 вне форума Ответить с цитированием
Старый 27.10.2017, 11:26   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от artems67 Посмотреть сообщение
а слово "МАМА" использовать нельзя по условию. Так как вводятся до 6 произвольных различных символов.
понял. косяк мой, действительно, это я невнимательно прочитал условие.


Цитата:
Сообщение от artems67 Посмотреть сообщение
Нужно просто из слова анаграммы составить.
понятно.
ну, это несложно. поиск по C# string permutation сразу даёт кучу готовых вариантов.

например, один из них (через рекурсию):

Код:
		public static void Main(string[] args)
		{
			string word = "abc";
			WordPermuatation("", word);
    
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
		
		public static void WordPermuatation(string prefix, string word)
		{
			int n = word.Length;
			if (n == 0) {
				Console.WriteLine(prefix);
			} else {
				for (int i = 0; i < n; i++) {
					WordPermuatation(prefix + word[i], word.Substring(0, i) + word.Substring(i + 1, n - (i + 1)));
				}
			}
		}
или такой вариант:
Код:
		private static void Swap(ref char a, ref char b)
		{
			if (a == b)
				return;
			a ^= b;
			b ^= a;
			a ^= b;
		}

		public static void GetPer(char[] list)
		{
			int x = list.Length - 1;
			GetPer(list, 0, x-1);
		}

		private static void GetPer(char[] list, int k, int m)
		{
			if (k == m) {
				Console.WriteLine(list);
			} else
				for (int i = k; i <= m; i++) {
					Swap(ref list[k], ref list[i]);
					GetPer(list, k + 1, m);
					Swap(ref list[k], ref list[i]);
				}
		}

Последний раз редактировалось Serge_Bliznykov; 27.10.2017 в 11:29.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возникли проблемы с for при переводе с VB на C# b0nny Общие вопросы .NET 9 07.04.2015 13:46
Возникли проблемы с функцией gets() apeorin Visual C++ 16 23.10.2012 20:03
Возникли проблемы с функциями FRATER1234 Общие вопросы C/C++ 10 08.10.2011 20:51
Установка Wordpress возникли проблемы misher WordPress и другие CMS 9 21.02.2011 09:34
JQuery - возникли некоторые проблемы! hoza_syl JavaScript, Ajax 6 30.12.2009 23:11