Форум программистов, компьютерный форум CyberForum.ru

Анаграммы(олимпиадная задача) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить среднее арифметическое положительных элементов http://www.cyberforum.ru/cpp-beginners/thread409638.html
задан массив Z(n) целых чисел.Найти максимальный элемент массива,и если это простое число-удалить все эллементы,равные максимальному значению.Определить среднее арифметическое положительных элементов массива после удаления.Упорядочить массив по убываню модулей
C++ Быстрый поезд Между двумя крупнейшими городами нашей страны Санкт-Петербургом и Москвой ежедневно совершают рейсы n поездов. Для каждого поезда известно его время отправления из Санкт-Петербурга и время прибытия в Москву. Найдите самый быстрый поезд и его скорость в предположении, что длина железной дороги между Санкт-Петербургом и Москвой равна 650 км. Входные данные Первая строка входного файла... http://www.cyberforum.ru/cpp-beginners/thread409636.html
Найти сумму положительных элементов последовательности C++
int below_zero = 0; int zero = 0; int after_zero = 0; for ( int i = 0; i < N; i ++ ) { if ( mas > 0 ) after_zero++; else if ( mas == 0 ) zero++; else below_zero++;
C++ Функция qsort для сортировки массивов структур
В общем есть структура struct User { int id; char nickname; int karma; };
C++ Лифт http://www.cyberforum.ru/cpp-beginners/thread409632.html
В доме Вилли установили скоростной лифт новой экспериментальной модели. В этом лифте кнопки с номерами этажей заменены двумя другими кнопками. При нажатии на первую кнопку лифт поднимается на один этаж вверх, а при нажатии на вторую – опускается на один этаж вниз. Младшему брату Вилли Дилли очень нравится кататься на новом лифте. Он катается на нём до тех пор, пока не побывает на каждом из...
C++ Решить задачку Когда встречаю эпсилон возникают проблемы, не пойму что это и как мудрить , знаю что надо использовать float и int все ) Умножить, сложить , квадрат и факториал это без проблем а это хз как мудрить, помогите решить и плз объясните )) Вот задача : картинка 13 кб. http://s017.***********/i437/1112/34/dfafd2b4a0b9.png подробнее

Показать сообщение отдельно
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.06.2013, 15:43     Анаграммы(олимпиадная задача)
Цитата Сообщение от sandye51 Посмотреть сообщение
вы не упали случаем?
сложно даже представить 100000! - число этих самых перестановок
кто же такие задачи в лоб решает?!

C++
1
2
3
4
5
6
7
8
9
10
11
int Check(char *s, char *t)
{
   int count[128] = {0}, i; 
   for(; *s; ++s)
      ++count[*s];
   for(; *t; ++t)
      --count[*t];
   for(i = 'A'; i <= 'Z' && !count[i]; ++i)
      ;
   return i > 'Z';
}
Цитата Сообщение от I.M. Посмотреть сообщение
Создаете два массива. Каждый на 128 элементов
можно и одним обойтись

Добавлено через 4 минуты
так как длины строк изначально одинаковы, то еще проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int Check(char *s, char *t)
{
   int count[128] = {0}, i; 
   for(; *s; ++s, ++t)
   {
      ++count[*s];
      --count[*t];
   }
   for(i = 'A'; i <= 'Z' && !count[i]; ++i)
      ;
   return i > 'Z';
}
вариаций несколько, главное, сложность линейная
 
Текущее время: 23:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru