报数游戏(约瑟夫问题)
报数游戏是这样的:有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;}}
}
报数游戏(约瑟夫问题)相关推荐
- 7-5 模拟报数游戏(约瑟夫环问题):有n个人围成一圈从1开始按顺序编号从第一个人开始从1到k报数,报到k的人退出圈子;然后圈子缩小,下一个人继续,问最后留下的是第几号(只留1 人)。要求定义函数
学习记录与分享 PTA程序设计类教学平台-Python作业二(循环结构程序设计) 题目 7-5 模拟报数游戏(约瑟夫环问题) 有n个人围成一圈,从1开始按顺序编号,从第一个人开始从1到k报数,报到k的 ...
- ccf报数游戏java_报数
寒假作业22~242021-02-22 16:57:05 韩信点兵:在中国数学史上,广泛流传着一个"韩信点兵"的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了 ...
- NYOJ 559 报数游戏
报数游戏 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 n 个人站成一行玩一个报数游戏.所有人从左到右编号为 1 到 n.游戏开始时,最左边的人报 1,他右边的人报 2 ...
- zcmu-1643 报数游戏
B - 报数游戏 n个人站成一行玩一个报数游戏.所有人从左到右编号为1到n.游戏开始时,最左边的人报1,他右边的人报2,编号为3的人报3,等等.当编号为n的人(即最右边的人)报完n之后,轮到他左边的人 ...
- toj 4316 报数游戏
toj 4316 报数游戏 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte 总提交: 68 测试通过:35 描述 n 个人站成一行玩一个报数游戏.所有人从左到右 ...
- 微课|中学生可以这样学Python(例5.3):报数游戏
适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第5章 Python序列及应用 5.1.6 精彩例题分析与解答 例5.3 报数游戏 京东购买 ...
- python循环报数游戏_报数游戏python 解答
又做了个小题目,报数游戏. 题目详情: 一种报数游戏是从1开始连续报数,如果报到7的倍数(7,14,21,28--)或者包含数字7的数(7,17,27,37--)就用拍手代替这个数而不能报出.假设你连 ...
- java实现报数游戏
报数游戏 有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止.问剩下第几个孩子.下面的程序以10个孩子为例,模拟了这个过程,请完善之(提 ...
- python——报数游戏
报数游戏 模拟报数游戏.有n个人围成一圈,顺序编号,从第一个人开始从1到k(假设k=3)报数, 报到k的人退出圈子,然后圈子缩小,从下一个人继续游戏,问最后留下的是原来的第几号. 思路 代码 &quo ...
最新文章
- 《深入Python》-11. HTTP Web 服务
- 分享一些user-agent(移动端和PC端都有)
- 参数方程求二阶偏导_偏微分方程
- 手把手带你写一个JavaScript类型判断小工具
- 【转】JMeter学习(十三)分布式部署
- linux进程池 自动增长,linux下C 线程池的原理讲解和代码实现(能自行伸缩扩展线程数)...
- 【成长之路】JavaScript中,模拟 call 的底层实现
- Android热修复Java类_Android 热修复(一)
- TCP/IP之路由算法
- 【Java笔记】IO流(2):字符流
- STM STC NXP单片机 按键扫描
- oracle detele,Oracle中,一个Delete操作的流程
- SpringCloud整合LCN分布式事务模式
- MOOC北京理工《C语言程序设计(上)》第5周第3题:求最小m值
- 10分钟健身法读书笔记(5/5)
- python从srt文件中只提取歌词
- 古诗文网站之网络爬虫
- 数字信号处理(七)FIR数字滤波器的设计
- 2022年天猫双11购物节,10月24日晚8点预售来袭
- Centos服务器重启后无法打开网站的解决方案