宝峰科技

 找回密码
 注册

QQ登录

只需一步,快速开始

智能终端设备维修查询系统注册会员邮箱认证须知!
查看: 3376|回复: 0

习语言编程求解 约瑟夫环问题

[复制链接]
  • TA的每日心情
    开心
    2024-12-9 18:45
  • 签到天数: 124 天

    [LV.7]常住居民III

    admin 发表于 2011-9-28 22:39:07 | 显示全部楼层 |阅读模式

    欢迎您注册加入!这里有您将更精采!

    您需要 登录 才可以下载或查看,没有账号?注册

    x
    程序代码文件“约瑟夫环问题.习”内容如下:

    程序名称:约瑟夫环问题
    程序功能:
    作者:
    单位:
    时间:

    概述:
    设有n个人围坐在圆桌周围,现从某个位置m(1≤m≤n)上的人开始报数,报数到k的人就站出来。下一个人,即原来的第k+1个位置上的人,又从1开始报数,再报数到k的人站出来。依此重复下去,直到全部的人都站出来为止。试设计一个程序求出出列序列。
    输入:三个数,分别是n,m,k
    输出:出列的顺序

    算法描述:
    动态分配一块内存构造数组模拟队列,队列内存人编号,模拟报数过程,碰到出列的人就排到队列末尾, 直到只剩一个人,停止。
    队列从尾部到头部打印出内容即为出列顺序。

    运行流程:





    1. #包含 “习语言系统.接口”

    2. 整数类型 主函数(整数类型 参数个数, 字符串类型 参数[] )
    3. 开始   
    4. 自然数 甲,乙,丙, 总人数, 起始位置, 出列数字, *队列, 当前人数,报数, 位置;

    5.   输出字符串并换行("习语言实现约瑟夫环问题求解开始");
    6. 【输入】  
    7.   格式输出(“%(换行)请输入总人数n,起始位置m,出列数字k,以空格分隔:”);
    8.   格式输入(“%(自然数) %(自然数) %(自然数)”, &总人数, &起始位置, &出列数字 );
    9.   格式输出(“总人数= %(自然数), 起始位置=%(自然数), 出列数字= %(自然数)%(换行)”,总人数, 起始位置, 出列数字 );
    10.   如果( 总人数 小于 1  或 起始位置 等于 0 或 起始位置 大于 总人数 或 出列数字 小于 1 )
    11.   {
    12.    输出字符串并换行("输入错误!");
    13.    暂停();
    14.    返回 1;
    15.   }   
    16.   
    17. 【申请内存及初始化】
    18.   队列 = (自然数 *)申请内存数组(总人数+1, 类型长度(自然数));  
    19.   步进循环( 甲 赋值 1;甲 小于等于 总人数; 甲 加加 )
    20.    队列[甲] = 甲;

    21. 【运算开始】
    22. 当前人数 = 总人数;
    23. 报数 = 1;
    24. 位置 = 起始位置;
    25. 当( 当前人数 大于 1 ) 重复
    26. {
    27.   如果( 报数 等于 出列数字 )
    28.   {【出列处理】
    29.    乙 = 队列[位置];
    30.    步进循环( 甲 = 位置; 甲 小于 当前人数; 甲 加加 )
    31.     队列[甲] = 队列[甲+1];
    32.    队列[当前人数] = 乙;
    33.    
    34.    当前人数 --;
    35.    报数 = 1;   
    36.   }
    37.   否则
    38.   {
    39.    报数 加加;
    40.    位置 加加;
    41.   }
    42.   如果(位置 大于 当前人数 )
    43.    位置 = 1;
    44. }
    45. 【出列顺序为数组内容,倒着从尾部到头】
    46.   格式输出(“出列序列为:%行”);
    47.   步进循环( 甲 = 总人数; 甲 大于 0 ; 甲 -- )
    48.   {
    49.   格式输出(“%(自然数)、”, 队列[甲]);
    50.   }  
    51.   格式输出(“%行%行”);
    52.   释放内存( 队列 );
    53.         
    54.   输出字符串并换行("习语言实现约瑟夫环问题求解结束");
    55.   暂停();
    56.   返回 0;
    57. 结束   
    复制代码




    修订历史:



    运行结果如下:
    2966183304578204918.jpg
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    免责声明

    本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件编程开发或软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习编程开发技术或逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者用于商业用途!否则,一切后果请用户自负!

    QQ|Archiver|手机版|小黑屋|联系我们|宝峰科技 ( 滇公网安备 53050202000040号 | 滇ICP备09007156号-2 )

    Copyright © 2001-2023 Discuz! Team. GMT+8, 2024-12-22 12:39 , File On Powered by Discuz! X3.49

    快速回复 返回顶部 返回列表