Имеем вот такой код на С++:
#include <vector>
#include <iostream>
using namespace std;
struct bor
{
int mp[2];
int cnt;
bor(): mp({0,0}), cnt(0)
{}
};
vector<bor> tr;
int go()
{
tr.push_back(bor());
cerr << "go " << tr.size() << ' ' << tr.size() - 1 << endl;
return tr.size() - 1;
}
string s;
int add(int v, int i, int zn)
{
cerr << "in " << v << ' ' << tr.size() <<' ' << i <<' ' << s.size() << endl;
if (i == static_cast<int>(s.size()))
{
tr[v].cnt += zn;
return tr[v].cnt;
}
int x = s[i] - '0';
x = x % 2;
if (tr[v].mp[x] == 0)
{
cerr << "go in " << endl;
cerr << tr.size() <<' ' << tr[v].mp[x] << endl;
tr[v].mp[x] = go();
cerr << tr.size() <<' ' << tr[v].mp[x] << endl;
cerr << "go out " << endl;
}
return add(tr[v].mp[x], i + 1, zn);
}
int main()
{
go();
s = "01";
add(0, 0, 1);
}
Найдите в коде ошибку, если она есть. Что делает программа вам знать не нужно, нужно чтобы программа успешно завершила работу.