报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。

本题要求编写函数,给出每个人的退出顺序编号。

函数接口定义:

void CountOff( int n, int m, int out[] );

其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。函数CountOff将每个人的退出顺序编号存在数组out[]中。因为C语言数组下标是从0开始的,所以第i个位置上的人是第out[i-1]个退出的。

裁判测试程序样例:

#include <stdio.h>
#define MAXN 20void CountOff( int n, int m, int out[] );int main()
{int out[MAXN], n, m;int i;scanf("%d %d", &n, &m);CountOff( n, m, out );   for ( i = 0; i < n; i++ )printf("%d ", out[i]);printf("\n");return 0;
}/* 你的代码将被嵌在这里 */

输入样例:

11 3

输出样例:

4 10 1 7 5 2 11 9 3 6 8

思路:定义一个num[MAXN]数组用作标记是否退出

void CountOff(int n, int m, int out[]) {int i = 0, k = 0, count = 0;int num[MAXN];for (int j = 0; j < n; j++) {num[j] = 1;//数组位置标记,为1时表示未退出}while (count < n) {if (num[i] == 1) {//判断这个位置的人是否已退出k++;//k为1到m报数}if (k == m) {count++;out[i] = count;//count是退出顺序编号同时用作记录退出的人数k = 0;//归零num[i] = -1;//标记这个位置人已退出}i++;//移到下一位if (i == n) {//当到最末位的下一位时从首位开始i = 0;}}
}

报数游戏(约瑟夫问题)相关推荐

  1. 7-5 模拟报数游戏(约瑟夫环问题):有n个人围成一圈从1开始按顺序编号从第一个人开始从1到k报数,报到k的人退出圈子;然后圈子缩小,下一个人继续,问最后留下的是第几号(只留1 人)。要求定义函数

    学习记录与分享 PTA程序设计类教学平台-Python作业二(循环结构程序设计) 题目 7-5 模拟报数游戏(约瑟夫环问题) 有n个人围成一圈,从1开始按顺序编号,从第一个人开始从1到k报数,报到k的 ...

  2. ccf报数游戏java_报数

    寒假作业22~242021-02-22 16:57:05 韩信点兵:在中国数学史上,广泛流传着一个"韩信点兵"的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了 ...

  3. NYOJ 559 报数游戏

    报数游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 n 个人站成一行玩一个报数游戏.所有人从左到右编号为 1 到 n.游戏开始时,最左边的人报 1,他右边的人报 2 ...

  4. zcmu-1643 报数游戏

    B - 报数游戏 n个人站成一行玩一个报数游戏.所有人从左到右编号为1到n.游戏开始时,最左边的人报1,他右边的人报2,编号为3的人报3,等等.当编号为n的人(即最右边的人)报完n之后,轮到他左边的人 ...

  5. toj 4316 报数游戏

    toj 4316 报数游戏 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte 总提交: 68 测试通过:35 描述 n 个人站成一行玩一个报数游戏.所有人从左到右 ...

  6. 微课|中学生可以这样学Python(例5.3):报数游戏

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第5章  Python序列及应用 5.1.6  精彩例题分析与解答 例5.3  报数游戏 京东购买 ...

  7. python循环报数游戏_报数游戏python 解答

    又做了个小题目,报数游戏. 题目详情: 一种报数游戏是从1开始连续报数,如果报到7的倍数(7,14,21,28--)或者包含数字7的数(7,17,27,37--)就用拍手代替这个数而不能报出.假设你连 ...

  8. java实现报数游戏

    报数游戏 有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止.问剩下第几个孩子.下面的程序以10个孩子为例,模拟了这个过程,请完善之(提 ...

  9. python——报数游戏

    报数游戏 模拟报数游戏.有n个人围成一圈,顺序编号,从第一个人开始从1到k(假设k=3)报数, 报到k的人退出圈子,然后圈子缩小,从下一个人继续游戏,问最后留下的是原来的第几号. 思路 代码 &quo ...

最新文章

  1. 《深入Python》-11. HTTP Web 服务
  2. 分享一些user-agent(移动端和PC端都有)
  3. 参数方程求二阶偏导_偏微分方程
  4. 手把手带你写一个JavaScript类型判断小工具
  5. 【转】JMeter学习(十三)分布式部署
  6. linux进程池 自动增长,linux下C 线程池的原理讲解和代码实现(能自行伸缩扩展线程数)...
  7. 【成长之路】JavaScript中,模拟 call 的底层实现
  8. Android热修复Java类_Android 热修复(一)
  9. TCP/IP之路由算法
  10. 【Java笔记】IO流(2):字符流
  11. STM STC NXP单片机 按键扫描
  12. oracle detele,Oracle中,一个Delete操作的流程
  13. SpringCloud整合LCN分布式事务模式
  14. MOOC北京理工《C语言程序设计(上)》第5周第3题:求最小m值
  15. 10分钟健身法读书笔记(5/5)
  16. python从srt文件中只提取歌词
  17. 古诗文网站之网络爬虫
  18. 数字信号处理(七)FIR数字滤波器的设计
  19. 2022年天猫双11购物节,10月24日晚8点预售来袭
  20. Centos服务器重启后无法打开网站的解决方案

热门文章

  1. 超简单集成华为HMS Scankit扫码SDK实现扫一扫二维码
  2. [Office] 稿纸设置
  3. css实践——实现凹凸线条
  4. ApacheCN机器学习第二次线下活动
  5. Collection集合--遍历List集合的五种方法
  6. 格雷希尔GripSeal能为设备集成商做什么?
  7. 计算机噪音来自哪里用英语怎么说,电脑有噪音怎么办 分析杂音来自哪里【详细介绍】...
  8. 密集匹配SGM python
  9. Landmark Recognition Using VGG16 Training
  10. 锐龙r7 5800X和i9 10900k 哪个好