공부하자.../C언어

큐를 이용하여 3번째 수만 골라내는 조세퍼스 문제

진진형제 2010. 10. 27. 09:42

1~42까지 정수에서 3번째 수를 반복해서 삭제할 때 마지막에 남는 수는?

#include <iostream>

#include <string>

#include <queue>

 

using namespace std;

 

void main()

{

         queue<int> qu;

         int i, temp;

         for(i=1; i<=42; i++)

         {

                  qu.push(i);

         }

         while(qu.size() > 2)

         {

                  temp = qu.front();

                  qu.pop();

                  qu.push(temp);

 

                  temp = qu.front();

                  qu.pop();

                  qu.push(temp);

 

                  qu.pop();    // 3번째수삭제

         }

 

         while(!qu.empty())

         {

                  cout << qu.front() << endl;

                  qu.pop();

         }

     }