1、前言
一开始我感觉这道题应该蛮简单的,不就是到第三个人那不报数嘛,然后问最后一个留下的人原来排在第几号。经过博主仔细阅读之后,发现,事情并非如此简单。因为,他说了,每到第三个人那就退出,也就是说,在原来元素顺序的基础上,要从第3,6,9,12等三的倍数之后的序号退出该排序(此时博主还没系统学过数据结构,只是稍微了解了一点数据结构的知识,所以咱只用现有的C/C++语言的知识来借题就可)。
2、解体思路
上面已经说了,首先咱得从每到第三号位的时候,退出这个圈子;
其次,退出去之后,后面的元素得依次向前移一位。因为,前面的3已经退出了,而问题又问的是这个位置上的数原来排在第几号,所以我们得把后面的元素都依次向前移。
最后,光是向前移还不行,还必须在移的时候用一个数组来记录所移元素的初始位置。
3、
好,说了那么多,接下来就直接看代码

#include <iostream>
using namespace std;int main()
{void sort(int*, int);cout << "请输入N个人" << endl;int number;int n = 0;//用n来记录退出的次数cin >> number;//输入的人数cout << "请输入每个人的数字代号"<<endl;int* p =new int[number];//申请一个可以存入输入的人数的动态数组for (int i = 0;i < number;i++) {cin >> *(p+i);//输入人的代号}    int* mark = new int [number];//用来标记该元素改变前的位置for(int i=0;i<number;i++){mark[i] = i;}for (int i = 0;i < number;i++){if ((i + 1) % 3 == 0) {//如果到第三个人就退出p[i - n] = -1;//用-1来提示退出圈子sort(p + i - n, number - i);//调用sort函数来退出第三个人,函数值从第i个人开始,余下number-1-i个人sort(mark + i - n, number - i);n = n + 1;//记录改变次数}}for (int i = 0;i < number;i++) {//输出改变之后的排序if (p[i] == -1) break;//输出到-1时直接退出循环cout << p[i] << " ";//输出数组}cout << endl;for (int i = 0;i < number;i++) {//输出现有排序的元素的原有位置if (p[i] == -1)break;cout << " " << p[i] << "原有的位置是:" << mark[i] << endl;}delete[]p;//清空指针数组delete[]mark;return 0;
}void sort(int* p,  int n) {//用p来接受数组p+i的首地址;这里的n是用来接收该次退出的第三位元素之后的元素总数int *t=new int[n-1];//申请一个存n-1个人的动态数组,该数组用来记录所接受的数组的第p+i+1位之后的元素int z;//申请一个用来将数组的第p+i位与最后一位数转换的变量if (n != 1) {//使用这个控制条件的原因是因为当n=1时,调用函数的数组访问的是最后一个有效元素(不等于1的元素)for (int i = 0;i < n - 1;i++) { *(t + i) = *(p + i + 1); } //将数组的p+i+1之后的地址存的值都传给数组tif (*p == -1) {//将所接受的数组的地址的值与数组末尾的地址的值交换,将-1放在数组的末尾z = *p;*p = *(p + n - 1);*(p + n - 1) = z;}for (int i = 0;i < n - 1 ;i++) { *(p + i) = *(t + i); }//将t存入的值再传回给数组p+i之后的值,到第n-1个结束}delete[]t;//清空指针
}


好啦,整个代码已经写完了,这也是靠现有知识花了两天时间才做出来了这道题(中途遇到了蛮多bug的,看来是真的没天赋了哈哈哈),不过,通过自己一手做出来的时候,那感觉还不错。

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下来的是原来的第几位(指针方法处理)。相关推荐

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

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

  2. 有n个人围成一圈 顺序排号 java_java基础编程题有n个人围成一圈顺序排号

    下面给大家带来的这道编程题可以算得上是一道非常基础的java编程题目,刚刚开始接触java编程的小伙伴一起来看看具体的题目以及解题方法吧. 下面是具体的题目,题目还是非常的简单的. 一.题目 有n个人 ...

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

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

  4. 有n个人围成一圈 顺序排号 java_java有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出...

    public class Test { public static void main(String[] args) { // 测试数据 ArrayList list = new ArrayList( ...

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

    1 概述 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下来的是原来的第几位(指针方法处理).--C语言 2 解法 //C程序设计第五版(谭浩强) / ...

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

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

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

    问题详情:有n个人围成一圈,顺序排号.从第一个人开始报数(从1报到3),凡是报到3的人退出圈子,问最后留下的是原来第几号的那位? 我的代码: #include<stdio.h> int m ...

  8. 有n个人围一圈,顺序排号,报号游戏

    网上关于这个问题的解法已经有很多了,我现在是把网上的一些加上自己的理解,套用为一个固定写法,当然理解最重要啦! 我也是最近才开始学指针的,欢迎大家留言学习讨论 报数游戏的普遍说法: 有10个人围一圈, ...

  9. n个小孩围成一圈,顺序报号,从第一个人开始报数(从1报到5),凡是报到5的人退出圈子,问最后留下的小孩原来是几号

    n个小孩围成一圈,顺序报号,从第一个人开始报数(从1报到5),凡是报到5的人退出圈子,问最后留下的小孩原来是几号 #include<stdio.h> int main() {int i,k ...

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

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

最新文章

  1. js中获取时间new date()的用法
  2. Navigator 对象
  3. python判断对错题_python 初学者错题本
  4. Web框架——Flask系列之Flask创建app对象 路由(十二)
  5. “腾讯也感受到危机了!”
  6. jetty服务器原理与maven集成
  7. 玩转 Numpy 的精选习题
  8. Python检查批量URL是否可以正常访问
  9. 2020mysql下载教程
  10. snmp trap配置
  11. win7 修复计算机 黑屏,Win7系统崩溃不用重做!Win7无法进入桌面黑屏
  12. matlab usb采集,MATLAB调用研华USB数据采集卡实现数据实时采集_董超.pdf
  13. 漫谈历法、闰年与闰月
  14. 微信云开发-事件触发器的使用
  15. 从人工客服到人机协同,容联云用AI重塑联络中心
  16. Cypher 语句实战
  17. 基于AIGC的3D场景创作引擎概述
  18. 什么是危机公关与舆情监测?
  19. 互联网日报 | 茅台市值突破2万亿;新浪收到非约束性私有化要约;OPPO参与英国首个5G SA网络建设...
  20. STM32+AD7124+热电偶方案+Pt100冷端补偿解析工程源码

热门文章

  1. 自动驾驶之车位线检测之二单路鱼眼相机矫正裁剪(python ,C++,opencv)
  2. 到底是 Activity 被回收了还是进程被杀死了?
  3. asp.net2.0自动根据用户自定义字数生成带分页的静态(HTML)页
  4. 双星穹月、众星伴月照片(摄于广州大学城中心湖)
  5. tar压缩/解压、加密压缩/解密解压
  6. 宇宙信息交互与信息安全
  7. C 数据类型(bit,byte,word;char,int,long;float,double)
  8. jQuery保留两位小数
  9. arcpy批量转换国土txt为shp(包含对应投影坐标)
  10. java-net-php-python-ssm二手商品交易平台的设计与实现(2)计算机毕业设计程序