码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++ 约瑟夫环(数组)


    【问题描述】

    设计并实现一个解决约瑟夫环问题的类Joseph。当需要解决一个n个人间隔为m的约瑟夫环问题,可以构建一个对象Joseph obj(n, m),然后调用obj.simulate()输出模拟删除过程。

    【输入形式】

    输入为三个正整数n和m和k,空格分隔,分别代表编号长度和间隔长度和起始位置,编号长度n<=50。

    【输出形式】

    输出为n个整数,空格分隔。

    【样例输入1】

    10 4 1

    【样例输出1】

    4 8 2 7 3 10 9 1 6 5

    【样例输入2】

    30 10 5

    【样例输出2】

    14 24 4 15 26 7 19 1 13 28 11 27 12 30 18 6 25 20 10 8 5 9 17 23 16 3 22 29 21 2

    【样例说明】

    约瑟夫环的起始编号为1,编号为[1, n]。

    注意判断数组是否溢出。

    m的值可以大于n。

    1<=k<=n

    【示例代码如下】

    1. #include
    2. #include
    3. using namespace std;
    4. class Joseph
    5. {
    6. public:
    7. Joseph(int N,int M,int K=1):n(N),m(M),k(K){}//初始化
    8. void simulate();
    9. private:
    10. int n;//编号长度
    11. int m;//间隔长度
    12. int k;//起始位置
    13. };
    14. void Joseph::simulate()
    15. {
    16. int *a=new int[50];//存储数的数组
    17. int lef = n;//剩余标记的人数
    18. int p = k-1;//指向起始位置
    19. int i = 0;
    20. int number = 0;
    21. int *flag=new int [50];
    22. //将两个数组初始化
    23. for (; i
    24. {
    25. a[i] = i + 1;//编号
    26. flag[i] = 1;
    27. }
    28. for (i=n; i<50; i++)
    29. {
    30. a[i] = 0;
    31. flag[i] = 0;
    32. }
    33. while (lef >= 1)
    34. {
    35. number = m;//报号数
    36. while (number>0)
    37. {
    38. if (flag[p] == 1)
    39. {
    40. number--;
    41. p++;
    42. }
    43. else if (p >= n)
    44. p = 0;
    45. else
    46. p++;
    47. }
    48. cout << a[p-1] << " ";
    49. flag[p-1] = 0;
    50. lef--;
    51. }
    52. }
    53. //测试程序
    54. int main()
    55. {
    56. int n,m,k;
    57. cin >>n>>m>>k;
    58. Joseph obj(n, m, k);
    59. obj.simulate();
    60. return 0;
    61. }
  • 相关阅读:
    SpringBoot整合knife 4j
    【毕业设计】深度学习图像修复算法研究与实现 - python
    计算机网络---物理层疑难点总结
    今日配音热点来袭|想给短视频加配音就赶紧看过来吧
    栈的基本操作
    web前端期末大作业实例 (1500套) 集合
    01_JSON的理解
    Vue项目后台部分4,分类管理以及详情管理,添加和修改,loading效果,窗体弹出
    三、程序员指南:数据平面开发套件
    消防安全无小事!飞凌T507国产核心板助力消防疏散系统智能化升级
  • 原文地址:https://blog.csdn.net/weixin_74287172/article/details/134231998
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号