标签:des style blog http io color ar os java
5 3
4
首先说一下写这个之前我是准备徒手艹链表的,可惜意志力实在不咋滴,再加上手头上没课本,之前我有看过C语言版的链表实现,但没动手敲过,都是偷懒用list水过,list是双向链表,但约瑟夫这个问题吧,明显是用循环链表来完毕的,问题来了,本渣不会艹链表啊,木办法仅仅能用list来胡搞了
#include <stdio.h> #include <iostream> #include <algorithm> #include <list> using namespace std; int main() { int m,n,i; cin>>n>>m; list <int> node; list <int>::iterator j; for(i=1;i<=n;i++) node.push_back(i); //编号 j=node.begin(); while(node.size()>1) //当链表中仅仅剩一个元素时结束 { for(i=1;i<m;i++) //第k遍遍历 { if(j!=node.end()) j++; else //重点来了 { j=node.begin(); j++; //一開始忘记写这个了 事实上当j=node.end()时就意味着j已经指向node.begin()了,仅仅是由于这不是循环链表,我们须要手动把它改过来 } } if(j!=node.end()) node.erase(j++); else //同上 { j=node.begin(); node.erase(j++); } } cout<<node.front()<<endl; return 0; }
标签:des style blog http io color ar os java
原文地址:http://www.cnblogs.com/yxwkf/p/4086975.html