标签:
题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字 0 开始,每次从这个圆圈中删除第 m 个数字(第一个第 m 个数字。求出在这个圆圈中剩下的最后一个数字
思路:这就是约瑟夫环问题,使用STL中的list来解决,是最基础的解决办法
int Joseph(list<int>& ring,int k) { list<int>::iterator itr = ring.begin(),temp; int m; while(ring.size() >1) { m =1; if(itr == ring.end()) itr = ring.begin(); while(m <k) { if(itr == ring.end()) itr =ring.begin(); itr++; m++; if(itr == ring.end()) itr =ring.begin(); } temp = itr; itr++; ring.erase(temp); } itr = ring.begin(); return *itr; }
标签:
原文地址:http://blog.csdn.net/yusiguyuan/article/details/45361605