解题报告-2019.12.16

解题报告-2019.12

题目:6-3【拓展编程题_课后练习3】【P215 习题8-三-4】 报数 (20分)

题目详情:
报数游戏是这样的:有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 20

void 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;
}

/* 你的代码将被嵌在这里 */

一、解题思路

文字思路

①首先能够确定的是,这n个人的编号得用数组来进行保存。且初始化数组的值。
②报数的规律是:从第一个人开始报数,报到m的人退出,然后重新从1开始。所以得设一个计数的值,且在一个人退出后重新归零。
③out[]是用来存储每个人的退出顺序的,退出顺序需要设值累加保存。
④利用循环条件 “直到留下最后一个人”进行循环报数,设一个值给已经退出的数组元素,当值报到那时不继续报数。

流程图

二、解题过程中遇到的问题

1、题意理解错误: 我将out[]这个数组理解为存放这个报数中退出的编号
2、考虑不够周全:①将数组赋值时,从一开始到n ②到报数一圈结束时,应当将i重新归为0

三、部分代码

while ( count < n ) { //结束的条件 只剩一个数值
if ( a[i] != 0 )//等于0的即推出的元素 不为0的才继续参与报数
k++;
if ( k == m ) {
j++;
out[i] = j;//第i个数 是第j个退出的意思
k = 0;
count++;
a[i] = 0;
}
i++;
if ( i == n )//又一圈的报数 开始进行
i = 0;
}

原文地址:https://www.cnblogs.com/moonwinfred/p/12050126.html

时间: 2024-08-29 03:56:48

解题报告-2019.12.16的相关文章

2019.12.16

vim的三种常用模式 (一般模式.编辑模式.命令模式) 一般模式  定义:当我们使用命令vim filename 编辑文件时.默认进入该文件的一般模式.该模式下,可以:上下移动光标,删除某个字符.删除某行以及复制一行或者多行. h(方向键左键):光标向左移动一个字符 l(方向键右键):光标向右移动一个字符 k(方向键上键):光标向上移动一个字符 j(方向键下键):光标向下移动一个字符 Ctrl+B:文本页向前翻一页 Ctrl+F:文本页向后翻一页 数字0或者shift+6:移动到本行行首 shi

每日思考(2019/12/16)

题目概览 浏览器内多个标签页之间的通信方式有哪些 简述下你理解的优雅降级和渐进增强 写一个判断数据类型的方法 题目解答 浏览器内多个标签页之间的通信方式有哪些 WebSocket(可跨域) postMessage(可跨域) SharedWorker Server-Sent Events localStorage BroadcastChannel IE不支持 Cookies 简述下你理解的优雅降级和渐进增强 渐进增强(Progressive Enhancement):一开始就针对低版本浏览器进行构

2020-3-14 acm训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019 解题报告+补题报告

2020-3-15比赛解题报告+2020-3-8—2020-3-15的补题报告 2020-3-15比赛题解 训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019  A建筑(模拟) 耗时:3ms 244KB 建筑 你哥哥在最近的建筑问题突破大会上获得了一个奖项 并获得了千载难逢的重新设计城市中心的机会 他最喜欢的城市奈梅根.由于城市布局中最引人注目的部分是天际线, 你的兄弟已经开始为他想要北方和东方的天际线画一些想法

解题报告 smoj 2019初二创新班(2019.3.17)

目录 解题报告 smoj 2019初二创新班(2019.3.17) T1:找玩具 题目描述 题意转化 分析 代码 优化(代码复杂度) T2:闯关游戏 题目描述 分析 代码 T3:子数组有主元素 题目描述 分析 代码(\(O(nm\log n)\)) 优化 代码(\(O(nm)\)) 解题报告 smoj 2019初二创新班(2019.3.17) 时间:2019.3.21 T1:找玩具 题目描述 在游戏开始之前,游戏大师在房间的某些地方隐藏了N个玩具.玩具编号为1到N.您的任务是尽可能多地找到这些玩

2019模拟赛09场解题报告

目录 2019模拟赛09场解题报告 目录la~~ 题一:瞬间移动 题二:食物订购 题三:马蹄印 题四:景观美化 2019模拟赛09场解题报告 标签(空格分隔): 解题报告 Forever_chen 2019.8.20 目录la~~ 题一:瞬间移动 [题面] 有一天,暮光闪闪突然对如何将一个整数序列a1,a2,...,an排序为一个不下降序列起了兴趣.身为一只年轻独角兽的她,只能进行一种叫做"单元转换"(unit shift)的操作.换句话说,她可以将序列的最后一个元素移动到它的起始位置

2016.7.12 NOIP2013提高组 day2解题报告(未完成版)

考试马不停蹄地到来,昨天的程序还没改完,今天又考了day2,虽然没有昨天那么懵逼,但还是不尽如人意,现在还没讲题,我打算先自己看一次解题报告,争取加深理解,毕竟一位前辈说过,做一套题的质量取决于题本身的质量和你思考的程度. 考试总结: 1.数据分析推测可行算法很重要,要灵活掌握常用算法的时间复杂度: 2.对拍的方式要熟练,写对拍耗费的时间过多: 3.要加强代码实现的能力,比较突出的表现就是写200-300行多函数模拟或搜索的能力: 4.不要急于写过不完的程序,要多拿一点时间来分析数据,样例不够还

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共

Winter-2-STL-E Andy&#39;s First Dictionary 解题报告及测试数据

use stringstream Time Limit:3000MS     Memory Limit:0KB Description Andy, 8, has a dream - he wants to produce his very own dictionary. This is not an easy task for him, as the number of words that he knows is, well, not quite enough. Instead of thin

codeforces 505A. Mr. Kitayuta&#39;s Gift 解题报告

题目链接:http://codeforces.com/problemset/problem/505/A 题目意思:给出一个长度不大于10的小写英文字符串 s,问是否能通过在字符串的某个位置插入一个字母,使得新得到的字符串成为回文串. /**************************************(又到自我反省时刻) 做的时候,通过添加一个单位使得长度增加1,找出中点,检验前一半的位置,找出对称位置替换成对应的前一半位置的字符,然后原字符串剩下的部分追加到后面,再判断回文.但是由于