Как выйти из рекурсивного поиска после того, как найденное значение найдено? - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь решить проблему конкурентного программирования, и я создал метод, который возвращает парный вектор, показанный ниже:

bool warning = false;
vector<pair <int,int>> search(vector <pair <int,int>> vi){
    vector <pair <int,int>>m;
    if (warning){
        return m;
    }
    bool alg = false;
    if (vi.size() == 1){
        m = vi;
        warning = true;
    }
    for (int i = 0; i < vi.size()-1; i++){
        if (vi[i].second >= vi[i+1].first){
            alg = true;
            //auto it = vi.begin() + i;
            //auto it1 = vi.begin() + i + 1;
            vector <int> b{vi[i].first, vi[i].second, vi[i+1].first, vi[i+1].second};
            sort(b.begin(), b.end());
            vi.push_back(make_pair(b[0],b[3]));
            vi.erase(vi.begin() + i);
            vi.erase(vi.begin() + i);
            sort(vi.begin(), vi.end());
            //cout << "round one";
            search(vi);
            break;
        }
    }
    if (!alg){
        warning = true;
        m = vi;
        sort(vi.begin(), vi.end());
    }
}

В основном, когда я достигаю нижнего оператора, я хочу вернуть парный Vector, и немедленно выйдите из кода, потому что это то, чего я пытаюсь достичь.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...