xmoonlight, Не обязательно подстроки (просто так быстрее было пример написать), "гиря" и "аэродрон" подойдет, "таран" уже нет. Игру я как пример привел, где такой алгоритм обоснован (сомневаюсь, что это где-то применимо в реальных задачах). Насчет 7 мс, это первый запуск метода; второй и последующие, занимают уже около 4 мс, а для слов меньше 15 букв, результат действительно меньше 1мс. Конфиг: (Intel i5 7200u, 8gb ram, ssd nvme). Про использование деревьев не думал, но мне кажется построение дерева займет существенную часть времени.
xmoonlight, Ну я делал для курсовой игру, аналог игры "слова из слова", т.е. загадавыется случайное слово, например "гидроэлектростанция" и пользователь должен найти все слова, которые можно составить из этого слова ("стан", "станция", "трос" и т.д.). Соответственно поиск анаграмм применялся для проверки пользовательского решения, не вручную же мне для каждого слова все решения прописывать. Насчет скорости, на моем ноуте для слова "гидроэлектростанция" находится 1961 анаграмма среди 48053 слов за 7 мс, думаю это относительно быстро, чем полный перебор :)
Данил, Если хотите вручную добавлять обработчики для кнопок на форме, то нужно в коде дизайнера формы (Form1.Designer.cs) добавить метод обработчика на событие "Click" вашей кнопки, например:
this.button1.Click += new System.EventHandler(this.button1_Click);
При двойном нажатии на кнопку в конструкторе данный код создается автоматически вместе с методом "button1_Click".
Код рабочий, если значение label не изменяется после нажатия на кнопку, то смотрите в сторону свойств компонентов, возможно они заблокированы для изменений. Попробуйте пересоздать проект и проверить заново.