约瑟夫问题的五种实现方法

2024-09-04 05:38

本文主要是介绍约瑟夫问题的五种实现方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、队列

#include <stdio.h>
#include <queue>
using namespace std;
queue<int> q;
int n, m, cnt, out, a[101]; //a[i]=0表示在圈里 
int main()
{scanf("%d %d", &n, &m);for(int i=1; i<=n; i++){q.push(i);}while(!q.empty()){cnt++;if(cnt==m){cnt=0;printf("%d ", q.front());q.pop();}else{q.push(q.front());q.pop();}}return 0;
}

二、循环队列思路

#include <stdio.h>
int n, m, cnt, out, a[101]; //a[i]=0表示在圈里 
int main()
{scanf("%d %d", &n, &m);for(int i=1; ; i++){if(i>n){//i=i%n;i=i-n;}if(a[i]==0){cnt++;} if(cnt==m){cnt=0;out++;printf("%d ",i);a[i]=1;if(out==n){return 0;}}}	return 0;
}

三、死循环

#include <stdio.h>
int n, m, cnt, out, a[101]; //a[i]=0表示在圈里 
int main()
{scanf("%d %d", &n, &m);while(1){for(int i=1; i<=n; i++){if(a[i]==0){cnt++;} if(cnt==m){cnt=0;out++;printf("%d ",i);a[i]=1;if(out==n){return 0;}}}	}	return 0;
}

四、list

#include <bits/stdc++.h>
using namespace std;
int n, m;
list<int> l;
list<int>::iterator asd, temp;
int main()
{scanf("%d %d", &n, &m);for(int i=1; i<=n; ++i){l.push_back(i);}asd=l.begin();//当链表不为空时 while(!l.empty()){for(int i=1; i<=m; ++i){asd++;//如果链表已经遍历完了, 要跳到链表开头  if(asd==l.end()){asd=l.begin();}} //数完m个之后, asd其实是在第m+1个位置的 if(asd==l.begin()){		//当第m+1个位置是表头时, 第m个位置是表尾 printf("%d ", l.back());l.remove(l.back());}	else{	//否则, 直接--即可 temp=asd;--temp;printf("%d ", *temp);l.remove(*temp);	}}return 0;
}

五、死循环+删除数组

#include <bits/stdc++.h>
using namespace std;
int n, m, a[1001], people, cnt;
int main()
{cin >> n >> m;for(int i=1; i<=n; ++i){a[i]=i;}while(n){for(int i=1; i<=n; ++i){cnt++;if(cnt==m){cout << a[i] << " ";cnt=0;for(int j=i; j<=n-1; ++j){a[j]=a[j+1];}i--;n--;}}}return 0;
}

这篇关于约瑟夫问题的五种实现方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135151

相关文章

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

如何解决Pycharm编辑内容时有光标的问题

《如何解决Pycharm编辑内容时有光标的问题》文章介绍了如何在PyCharm中配置VimEmulator插件,包括检查插件是否已安装、下载插件以及安装IdeaVim插件的步骤... 目录Pycharm编辑内容时有光标1.如果Vim Emulator前面有对勾2.www.chinasem.cn如果tools工