一队士兵被敌人包围,围成一个圈使用Josephus知道最后一个士兵去报信
Josephus#include <iostream>
#include <list>
using namespace std;
template<class T>
void joseph(list<T>& a,list<T>&b,int jumNum){
list<T>::iterator iter=a.begin();
list<T>::iterator temp;
while(!a.empty()){
for(int i=0;i<jumNum;i++){
iter++;
if(iter==a.end())
iter=a.begin(); }
b.push_front(*iter);
temp=iter;
iter++;
if(iter==a.end())
iter=a.begin();
a.erase(temp);
}
}
int main(){
list<int> a;//use for
list<int> b;//
for (int i=0;i<7;i++)
{
a.push_back(i+1);
}
joseph(a,b,4);
list<int>::iterator it=b.begin();
while (it!=b.end())
{
cout<<"这个出去报信的士兵是:"<<*it<<endl;
it++;
}
}