Poj百练 2746:约瑟夫问题 (分类:模拟)
发布日期:2021-06-29 15:52:12 浏览次数:3 分类:技术文章

本文共 915 字,大约阅读时间需要 3 分钟。

//约瑟夫问题//模拟题要仔细思考清楚基本架构后再上手,不要写着添着改着,很容易逻辑混乱!#include
#include
#include
using namespace std;int flag[305];void init(){ for(int index = 0; index < 305; index++) flag[index] = 0;}int main(){ int n, m; scanf("%d%d",&n,&m); while(n!=0 && m!=0){ int index = -1, cont = 0; init(); //全都没有数过 for(int i = 1; i < n; i++){ cont = 0; while(cont != m){ index = (index+1)%n; //到圈尾,取模 if(flag[index] == 0){ //如果还没有退出圈,累加数量。如果累加到m,则该位置的点退出,置1 cont++; if(cont == m) flag[index] = 1; } } } //打印最后未圈出的点 for(int j = 0; j < n; j++){ if(flag[j] == 0){ printf("%d\n",j+1); break; } } scanf("%d%d",&n,&m); } return 0;}

 

转载地址:https://suprit.blog.csdn.net/article/details/81436016 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:git知识点梳理
下一篇:JWT(JSON Web Token)认证小结

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月14日 08时13分57秒