zoukankan      html  css  js  c++  java
  • 用C++实现约瑟夫环的问题

    约瑟夫问题是个有名的问题:N个人围成一圈。从第一个開始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。

    比如N=6,M=5。被杀掉的人的序号为5,4,6。2。3。最后剩下1号。

      假定在圈子里前K个为好人,后K个为坏人。你的任务是确定这种最少M,使得全部的坏人在第一个好人之前被杀掉。

     

    //----数学中有乘法口诀。

    。那仅仅是工具。我们都非常熟悉。

    //----C++中有一些主要的程序。也仅仅是工具我们必须像熟悉乘法口诀一样去熟悉这些程序。

    //----非常基础的一些东西必须熟练。。。

    #include<iostream>
    class link;
    using namespace std;
    class node{
    	friend class link;
    public:
    	node():next(NULL){}
    	node(int value):data(value),next(NULL){}
    private:
    	int data;
    	node *next;
    };
    class link{
    public:
    	link(int x,int y,int z):n(x),s(y),m(z){}
    	node *createlink()
    	{
    		node *p,*r;
    		node *q;
    		r=p=new node;
    		for(int i=1;i<=n;++i)
    		{
    			q=new node;
    			q->data=i;
    			r->next=q;
    			r=q;
    		}
    		r->next=p->next;
    		return p;
    	}
    	node *jusefu(node *startnode)
    	{
    		node *p=startnode->next;
    		node *q;
    			for(int i=1;i<s;++i)
    			   
    				p=p->next;//让p指向開始数数的位置,让q指向须要删除结点的位置的前一个位置
    			q=p->next;
    			
    			while(q->next!=p)
    			{
    				q=q->next;
    			}
    			while(p->next!=p)
    			{
    				for(int j=1;j<m;++j)
    				{
    					//node *tmp;
    					q=p;
    					p=p->next;
    					
    				}
    				q->next=p->next;
    				cout<<"将要删除的号码是"<<p->data<<endl;
    				delete p;
    				p=q->next;
    
    			}
    			cout<<"留下来的人数的号码为"<<p->data<<endl;
    			return p;
    		
    	}
    private:
    	int n;
    	int s;
    	int m;
    
    };
    int main()
    {   int i,j,k;
    	cout<<"输入总数,開始位置。每次循环人数"<<endl;
    	cin>>i>>j>>k;
    	link linklist(i,j,k);
    	node *head=linklist.createlink();
    	node *lastnode=linklist.jusefu(head);
    
    
    	system("pause");
    	return 0;
    }
    
    
    
    


  • 相关阅读:
    2.性能测试类型或方法
    3.性能测试通过标准
    下一个问题主题是啥呢?内网渗透深化?Java安全
    ThinkPHP5 RCE在PHP7下getshell
    泛微ecology OA数据库配置信息泄露
    渗透经验之SQL注入深化
    匿名伪造邮件发送脚本
    payload免杀之Installutil.exe&csc.exe利用
    记一次草鸡垃圾的域渗透
    内网渗透之frp使用
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6849882.html
Copyright © 2011-2022 走看看