用STL链表解华为约瑟芬问题

原创 2015年07月06日 23:01:54

代码如下:

#include <iostream>
#include<list>
#include <algorithm>

using namespace std;

void Print(int &s)
{
    cout<<s<<endl;
}


int main()
{
    int m,n;
    cin>>m;
    cin>>n;
    list<int> s1;
    for(int i=1;i<=n;i++)
    {
        s1.push_back(i);

    }
    for_each(s1.begin(),s1.end(),Print);
    int count=n;
    int k=0;
    while(1)
    {
        int step=m%s1.size()-1;
        k=(k+step)%s1.size();
        //cout<<"k:"<<k;
        int i=0;


        for(list<int>::iterator iter=s1.begin();iter!=s1.end();iter++)
        {
            //cout<<"i:"<<i;
            if(i==k)
            {
                cout<<*iter<<"->";
                s1.erase(iter);
                count--;
                break;
            }
            i++;

        }

    if(s1.empty())
        break;

    }

    system("pause");
    return 0;
}





约瑟夫问题的循环链表解法

  • 2012年06月25日 23:44
  • 2KB
  • 下载

约瑟夫问题循环链表解法、队列解法

(1)单链表解法: typedef struct node{ //定义单链表结构,next指向下一个节点 int key; node *next; }node,*pnode; ...

用循环链表解约瑟夫问题

原题:用循环链表求解约瑟夫问题,n 个人围成一个圆圈,首先从第 1 个人开始一个一个地顺时针报数,报到第 m 个人,令其出列。然后再从下一个人开始,从 1 顺时针报数,报到第 m 个人,再令其出列,....

循环链表解josephus问题

#include #include typedef struct clink_node_tag { struct clink_node_tag *next; int id; }clink_n...

数据结构实验:约瑟夫环链表解法

  • 2016年03月26日 22:27
  • 1.65MB
  • 下载

约瑟夫环(N个人围桌,C语言,数据结构) 链表解法

数组解法已经放在另一篇同名文章里,注释写的也很清楚,对于不懂的或者里面有不妥的地方可以留言交流,这里放链表的解法,链表由于其数据的特性,只需要将链表表示成环形链表,数据域存储生死状态,这样只需要将处于...
  • xuyuu
  • xuyuu
  • 2017年11月04日 20:50
  • 30

双向链表解读

转载自: http://blog.csdn.net/feixiaoxing/article/details/6849457 http://blog.sina.com.cn/s/blog...

不用链表解约瑟夫

  • 2013年04月25日 11:41
  • 3KB
  • 下载

约瑟夫环的链表解法和数学解法

约瑟夫环(Josephus)问题是由古罗马的史学家约瑟夫(Josephus)提出的,他参加并记录了公元66—70年犹太人反抗罗马的起义。约瑟夫作为一个将军,设法守住了裘达伯特城达47天之久,在城市沦陷...

c语言版数据结构(奇迹冬瓜)-链表实战(4)双链表解一元多项式相乘

//c语言版数据结构(奇迹冬瓜)-链表实战(4)双链表解一元多项式相乘 /* 主要函数思想: 初始化一元多项式A 初始化一元多项式B 初始化一元多项式C 给一元多项式A赋入数据 给一元多项式B赋入数...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用STL链表解华为约瑟芬问题
举报原因:
原因补充:

(最多只允许输入30个字)