Нужно написать код, который будет искать количество пар одинаковых элементов, чтоб их считало только один раз
Пример: [1, 2, 1, 1] - "Одна пара одинаковых эл-тов"
Вот мой код, который я написал (использую обычный односвязный список):
void List::Check(int quan)
{
Node* tmp = Head, *tmp_1 = tmp;
bool flag = false;
int counter = 0;
for (int i = 0; i < quan - 1; i++)
{
if (flag)
{
flag = false;
tmp = tmp->next;
continue;
}
flag = false;
tmp_1 = tmp->next;
for (int j = i + 1; j < quan; j++)
{
if (tmp->inf == tmp_1->inf)
{
counter++;
flag = true;
}
if (flag) { break; }
tmp_1 = tmp_1->next;
}
tmp = tmp->next;
if (flag) { continue; }
}
switch (counter)
{
case 0:
cout << "The list doesn't have the same values." << endl;
break;
case 1:
cout << "The list has 1 pair of the same values." << endl;
break;
default:
cout << "The list has " << counter << " pairs of the same values." << endl;
break;
}
}
Но в нем есть проблема: не считает, если есть непарное число эл-тов и они разбиты.
Пример тот же: [1, 2, 1, 1]
Когда находим первую пару [1, 2, 1, 1], то как реализовать пропуск второго эл-та пары, если он не рядом стоит ? Можно объяснить на основе массива, я не могу придумать, как это сделать, а в интернетах ничего не нарыл(
Виртуальный выделенный сервер (VDS) становится отличным выбором
Необходимо посчитать количество слов в каждой строке для дальнейших действийФункция работает с обычной строкой, а вот при передаче ей буфера,...
Всем привет! Есть такой конструктор который считывает информацию о квартире:
У меня есть два класса, один из которых mainВ последнем хранится переменная Name