@kamre
127 / 131 / 4
Регистрация: 25.12.2011
Сообщений: 443
|
29.03.2014, 21:56
|
|

Сообщение от bogdan_017
Вставить перед каждой его серией элемент с нулевым значением(под серией понимать два и более идущих подряд одинаковых элементов массива).
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| #include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> vect = { 2, 2, 2, 3, 7, 7, 7, 7, 8, 8 };
vect.reserve(2*vect.size());
auto iter = begin(vect);
while (iter != end(vect)) {
iter = adjacent_find(iter, end(vect));
if (iter != end(vect))
vect.insert(iter++, 0);
iter = find_if(iter, end(vect), [=] (int i) { return i != *iter; });
}
for (int i : vect)
cout << i << ", ";
} |
|
0, 2, 2, 2, 3, 0, 7, 7, 7, 7, 0, 8, 8,
0
|