约瑟夫环问题
来源:互联网 发布:c语言复制字符串函数 编辑:程序博客网 时间:2024/05/20 00:12
约瑟夫环: n个数字排成一个圆圈,从数字0开始,每次从这个圆圈中删除第k个数字,求这个圆圈中最后剩下的数字。
我们可以使用标准库中的链表来模拟一个圆环,每次访问到链表的结尾时,重新从头开始访问,直到链表中只剩下最后一个元素,输出结果。
int lastRemaining(unsigned int n,unsigned int k){ if (n < 1 || k < 1){ return -1; } list<int> numbers; for (int i = 0; i < n;++i) { numbers.push_back(i); } list<int> ::iterator current = numbers.begin(); while (numbers.size()>1) { for (int i = 1; i < k;++i) { ++current; if (current==numbers.end()) { current = numbers.begin(); } } list<int>::iterator i_next = ++current; if (i_next==numbers.end()) { i_next = numbers.begin(); } --current; numbers.erase(current); current = i_next; } return *current;}
更简便的一种实现:
int lastRemaining(unsigned int n,int k){if(n<1||k<1){return -1;}int result=0;for(int i=2;i<=n;++i){result=(result+k)%i;}return result;}
0 0
- 约瑟夫问题、约瑟夫环
- Josephus约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题(Josephus)
- 约瑟夫环问题--java
- 约瑟夫环问题 Josephus
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 求解约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 关于 chartjs插件的用法
- MySQL性能优化的21个最佳实践
- 关于ios9.0之后不能打开https的解决办法
- 深入浅出UML类图(五)
- 关于程序员的几个阶段
- 约瑟夫环问题
- Linux下自动备份Mongodb数据库并删除指定天数前的备份
- 算法(读书笔记):2.排序
- ContentProvider简单用法
- Android简单获取手机联系人姓名电话号码
- ActivityManager之Task、Process
- 数据结构(20)栈与递归
- Android studio开发中,利用日志查看当前的activity
- 自己实现Tab(一)