写在前面:这个方法用到很简单的指针与循环,以方便新手上手该题,并且通过直接模拟的方式理解这一过程。很多同学看懂题目意思而无法实现,不妨看看我的方法。

上代码:

#include<iostream>
using namespace std;
int pop(int a[],int n) //这是一个统计剩余人数的函数
{int j=0;for(int i=1;i<=n;i++){if(a[i]!=0)j++;}return j;
}
void out(int a[],int n) //这个函数用来将报了3的人踢出(赋为0)
{for(int i=1;i<=n;i++){if(a[i]==3)a[i]=0;}}
int main()
{int n;cin>>n;int *p=new int[n];//申请长度为n数组int a=1;          //用来控制该报的数,用变量控制保证连续性for(int i=1;i<=n;i++)//进行第一轮报数{p[i]=a;a++;if(a==4)a=1;    //从一到三报数} out(p,n);//将报出3的人踢出while(pop(p,n)!=1)  //控制循环终止条件为只剩一人{for(int i=1;i<=n;i++)    {if(p[i]!=0)        //忽略为0(出列)的人{p[i]=a;        //这里的a继承了前一轮的值保证了首尾相接a++;if(a==4)a=1;}}out(p,n);          //每轮报数后清算一次报3的人}for(int i=1;i<=n;i++){if(p[i]!=0)cout<<i;} return 0;
}

题目并不难,简单变量a的引入很好的解决了围成一圈的问题。

简单易理解的做法:有n个人围成一圈,顺序从1开始排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。简单的循环做法。相关推荐

  1. 详细讲解C语言经典例题:有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位

    有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子, 问最后留下的是原来第几号的那位 如题,相信很多人都和我一样,当时看到根本不知道从何下手.那么我们先不看代码,画图 ...

  2. c/c++ 有n个人围成一圈, 顺序排号。从第1个人开始报数(从1~3报数), 凡报到3的人退出圈子, 问最后留下的人原来排在第几号。

    解题思路的重要性显现出来了 比如这个题 n个人肯定是要用数组 毋庸置疑 那么报数怎么实现呢 可以设置一个循环变量 让他从0开始循环 当等于3 的时候 就归零 还有 n个人 肯定需要很多圈报数 这个很多 ...

  3. 题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成

    题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成 #include <stdio.h> in ...

  4. 有n个人,顺序排列, 并首尾相连围成一圈。从第一个人开始报数(从1到4),凡报到4的人退出圈子+扩展版本

    https://blog.csdn.net/qq_44037213/article/details/106551760?fps=1&locationNum=2 有n个人(n<=1000) ...

  5. ACMNO.38 C语言-报数 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

    题目描述 有n人围成一圈,顺序排号. 从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.`在这里插入代码片` 问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样 ...

  6. python n个人围成一圈,Python练习代码实例69-有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的...

    Python 练习实例69 题目:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位. 程序分析:无. 程序源代码:#!/usr/bi ...

  7. (C语言)有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

    题目描述 有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样例输入 3 样例输出 2 ...

  8. 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。...

    首先,我最大的学习来源不是百度而是我群友~~在这里表白一波我热爱学习的群友们! 然后今天群里突然有人提出了题目的这个问题: 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人 ...

  9. 习题 6.5 有n个人围成一圈,顺序排号。从第1个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。

    C++程序设计(第三版) 谭浩强 习题6.5 个人设计 习题 6.5 有n个人围成一圈,顺序排号.从第1个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号. 代码块: # ...

  10. 题目: 有 n个人围成一圈,顺序排号。从第一个人开始报数(从 1到 3报数),凡报到 3的 人退出圈子,问最后留下的是原来第几号的那位。(模拟)

    题目: 有 n个人围成一圈,顺序排号.从第一个人开始报数(从 1到 3报数),凡报到 3的 人退出圈子,问最后留下的是原来第几号的那位. 思路: 题目说是排成一圈,可以看成一个数组的排列.用i从下标为 ...

最新文章

  1. 道理我都懂,但是神经网络反向传播时的梯度到底怎么求?
  2. 书写神器——markdown
  3. python做数据分析难么_做统计学习,数据分析应该学Python还是R?
  4. cocoapod卡在了analyzing dependencies
  5. js文件改变之后浏览器缓存问题怎么解决?
  6. P1494 [国家集训队]小Z的袜子
  7. 【渝粤教育】 广东开放大学 21秋期末考试物业经营管理实务10123k2
  8. TCP/ip通信模式
  9. Python笔记-房贷计算(本息和本金,每月还利息和每月还本金)及作图对比
  10. java如何实现动态时钟_java中的动态时钟
  11. linux强实时,强实时性Linux内核的研究与设计
  12. 开课吧学python靠谱吗-开课吧的python课程怎么样,值得报名吗?
  13. Ext Scheduler(日程表) 2.0——升级到4.0
  14. JSP标签JSTL(3)--迭代操作
  15. 时间选择插件jquery.timepickr
  16. 【情感识别】基于matlab GUI SVM语音情感识别(带面板)【含Matlab源码 876期】
  17. 对比起来学习前端三大框架(持续更新)
  18. 将 N 叉树编码为二叉树
  19. Deeping Learning学习与感悟——《深度学习工程师》_2
  20. 面试逻辑题分享--字母数字映射关系推算题

热门文章

  1. 新浪(NASDAQ:SINA)
  2. 配置FPM(FastCGI 进程管理器)
  3. 如何应付全英文的技术面试(三)
  4. 风林火山高级java工程师面试题
  5. 程序猿之歌:一人我编程累
  6. Linux下杂乱无章的Bash脚本传入参数--如何解析?
  7. 简单实用的U盘启动盘制作教程--win10系统 ,亲测可用
  8. u大师制作linux启动盘制作工具,u大师u盘启动盘制作工具教程
  9. 物联网常见通信协议RFID、NFC、Bluetooth、ZigBee
  10. 【笔记】The art of research - (讲好故事和论点)