Josephus约瑟夫环问题STL模版类vector实现
2015-04-28 10:16
323 查看
问题描述:
已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号1开始报数,数到k的那个人出列;他的下一个人又从1开始报数,数到k的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
例如n=10,k=3时,输出的出列顺序是3,6,9,2,7,1,8,5,10,4。
程序代码
输出结果
请输入总人数n和出环位置k:
10 3
3 6 9 2 7 1 8 5 10 4
请按 ENTER 或其它命令继续
已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号1开始报数,数到k的那个人出列;他的下一个人又从1开始报数,数到k的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
例如n=10,k=3时,输出的出列顺序是3,6,9,2,7,1,8,5,10,4。
程序代码
#include<iostream> #include<vector> using namespace std; int main() { vector<int> a; //定义向量对象a int n,k,x=0; cout<<"请输入总人数n和出环位置k:"<<endl; cin>>n>>k; for(int i=0; i<n; i++) { a.push_back(i+1); //初始化向量对象a,依次将i+1插入尾部 } while(a.size()) //当向量中元素个数不为0 { x = (x+k-1) % a.size(); //计算出环位置 cout<<a[x]<<" "; a.erase(a.begin()+x); //在向量中删除此元素 } return 0; }
输出结果
请输入总人数n和出环位置k:
10 3
3 6 9 2 7 1 8 5 10 4
请按 ENTER 或其它命令继续
相关文章推荐
- [置顶] 从零开始学C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)
- [转贴]从零开始学C++之STL(二):实现一个简单容器模板类Vec(模仿VC6.0 中 vector 的实现、vector 的容量capacity 增长问题)
- [置顶] 从零开始学C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)
- C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)
- [置顶] 从零开始学C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)
- STL中vector的实现以及面试问题
- STL中vector的实现及面试问题
- 类模板模拟实现STL中Vector
- 【STL】模拟实现vector
- 模拟实现STL中的Vector容器
- C++利用vector容器实现最大最小元问题
- STL之Vector(Linux内核)完整实现
- STL之vector分配内存问题
- C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用
- 【STL】vector的模拟实现
- 模拟实现STL-Vector
- stl--vector 操作实现
- C/C++知识要点2——STL中Vector、Map、Set容器的实现原理
- 关于STL中vector使用unique()去重的问题
- DLL中传递STL参数,vector对象作为dll参数传递等问题(转)