Próbuję rozwiązać problem Flawiusza wektorem. Eliminujemy w nim co drugą osobę.
https://pl.wikipedia.org/wiki/Problem_J%C3%B3zefa_Flawiusza
Nie mam pojęcia dlaczego mój program (co widać dzięki wypisywaniu w pętli for po każdej eliminacji) wykonuje tylko jeden obieg pętli while.
#include<iostream>
#include<vector>
using namespace std;
int flawiusz(int n)
{
vector<int> kolo;
for (int i = 0; i < n; i++) kolo.push_back(i);
auto it = kolo.begin();
int i = 0;
while (kolo.size() > 1)
{
if (it + 1 == kolo.end())
{
kolo.erase(it + 1);
it=kolo.begin();
}
else
{
it++;
kolo.erase(it);
}
for (int i = 0; i < kolo.size(); i++)cout << kolo[i] << " ";
}
return kolo.front();
}
int main()
{
cout << "Podaj ilosc osob: ";
int n;
cin >> n;
cout << "Zostal numer: " << flawiusz(n);
}