C/C++

Как ещё можно оптимизировать код?

 #include  
#include
using namespace std;
string Remer(string& f, string& solo, int a)
{
string half = "", alr, s = "";
char buf;
int ind, counter1;
for (int i = 0; i < f.size(); i++)
{
buf = f[i];
counter1 = 0;
for (int j = 0; j < f.size(); j++)
{
ind = alr.find(buf);
if (ind == -1 and buf == f[j])
counter1++;
}
for (int z = 0; z < (counter1 / 2); z++)
{
half += buf;
s += buf;
}
alr += f[i];
}
if (a != 0)
s += solo;
for (int i = half.size()-1; i >= 0; i--)
s += half[i];
return s;
}
int Checker(string& f, string& solo)
{
string alr = "";
char buf;
int counter1, counter2 = 0, ind;
for (int i = 0; i < f.size(); i++)
{
buf = f[i];
counter1 = 0;
for (int j = 0; j < f.size(); j++)
{
ind = alr.find(buf);
if (ind == -1 and buf == f[j])
counter1++;
}
if (counter1 % 2 != 0)
{
counter2++;
solo = buf;
}
alr += f[i];
}
return counter2;
}
int main()
{
string f, solo = "";
int counter2;
cin >> f;
counter2 = Checker(f, solo);
switch (counter2)
{
case 0:
cout
Как вы нам, так и мы вам.
 #include  
#include
using namespace std;
bool remer(string& str)
{
int nechet = str.size() % 2;
map mapa;
for (auto& i : str) mapa[i]++;
for (auto& i : mapa)
{
if (i.second % 2) nechet--;
if (nechet= 2)
{
str[it] = str[str.size() - 1 - it] = i.first;
it++; i.second -= 2;
}
if (i.second) str[str.size() / 2] = i.first;
}
return true;
}

int main()
{
string f;
cin >> f;
if (remer(f)) cout
M)
Maxi ))))
51 416
Лучший ответ
Ерболат Ережепов забыл ретурн в маин =(.
Подсчитать количество всех символов и за линию (вместо твоего квадрата) сформировать палиндром (пропихивать по 2 символа - 1 назад, 1 вперед)
Если останется один символ без пары - он идет в центр. Если больше, то ответа нет.
Асет Кобланов
Асет Кобланов
34 940
удалил. невнимательно прочитал вопрос
Вы, для начала, напишите человеческим языком, что вы вообще пытаетесь сделать. А потом уже можно будет подумать над тем, как сделать это правильно.
Сергей Блинов ну

Учитывая строку, ваша задача - изменить порядок ее букв таким образом, чтобы она стала палиндромом (т. Е. Она читается одинаково вперед и назад).
т.е
Выведите палиндром, состоящий из символов исходной строки. Вы можете распечатать любое допустимое решение. Если решений нет, выведите "НЕТ РЕШЕНИЯ".
Не плохо было бы прилагать небольшое описание к алгоритму, чтобы сразу понимать что вы хотите/хотели сделать. Или хотя бы используйте более говорящие названия.

Путей для микрооптимизаций видно сходу достаточно много, но это не даст какого-то огромного прироста (убрать лишние проверки, заменить switch, убрать бесконечные операторы взятия остатка и заменить на побитовое И, и сделать это всё одной функцией)
Макрооптимизации же начинаются с перелопачивания алгоритма(который вам в общих словах описали другие участник проекта, единственное что - можно попробовать заменить std::map на статическую таблицу поиска, если нет потребности в широком алфавите + пара доп. структур) заканчиваясь распараллеливанием кода на несколько потоков и векторизацией.
Алексей Казак
Алексей Казак
1 453