首页 > 其他分享 >n个人围成圈报数游戏

n个人围成圈报数游戏

时间:2023-12-02 20:35:18浏览次数:39  
标签:游戏 出来 围成 指针 报数 赋值

n个人围成圈报数游戏

n个人围成圈报数游戏

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

Input
一行,一个数n。

Output
输出最后留下来的人的序号。

Sample Input 1 
40

Sample Output 1
28

来源:CP1266 n个人围成圈报数游戏(难度:中等)

一、前期:一头雾水

看到这个题目时,我先在草稿纸上画了画,感觉写起来可能有点难度。
但是,真正打开Clode Blocks时,我才真正面对了它。
看着“Hello World”,我想开始写,却发现无从下手:
怎么让报数3的人走开?
想不出来这个问题,我连一个“int”都打不出来。
这个问题难住了我。

二、中期:希望渺茫

循环报数,已经走开的人不参与接下来的报数。
我感觉这就是这个题的难点。
想出来,就能做出来;想不出,就做不出来。
我想了十分钟,仍旧是找不到方向。
我想过上网查询,但却又不甘心。
这时,我想到一个理论:

做不出来一道题时,可以先放一放,先做后面的题,做着做着前面的那个题也就能做出来了。

于是我先去做了它后面的那道题:CP1487用指针实现数据交换(难度:简单)
呃……四五行的代码……
再后面,就不是指针的题了。
于是我又回到了这道题。

三、后期:峰回路转

其实我还是没有做出来。
并不存在说,做一道简单题后,就能做出中等题的说法。
于是我去吃了个饭。
吃完饭回来,灵光一闪……不对。
没有灵光。
我还是只能在草稿本上写写画画,希冀那一刹那的灵光。
它来了。
没有来由地,我突然想到:如果把报数3的数字赋值为0,会怎么样?
这就是正解。

点击查看代码
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,j=0,n,shu,shuzu[100];
    scanf("%d",&n);
    shu=n;
    for(i=0; i<n; i++)
    {
        shuzu[i]=i+1;
    }
    while(shu>1)
    {
        for(i=0; i<n; i++)
        {
            if(shuzu[i]!=0)
            {
                j++;
                j=j%3;
            }
            if(j==0)
            {
                shuzu[i]=0;
            }
        }
        shu=0;
        for(i=0; i<n; i++)
        {
            if(shuzu[i]!=0)
                shu++;
        }
    }
    for(i=0; i<n; i++)
    {
        if(shuzu[i]!=0)
            printf("%d\n",shuzu[i]);
    }
    return 0;
}

但是啊,这里面并没有用到指针。

四、尾声

我终究是做了出来。
指针嘛,程序都出来了,插进去还不简单?
——————————
有点烂尾……
可能是我太菜了,但我确实花了很长时间才想出来0这个操作……
另外,前面的小故事,看看就好,不要笑我(* /ω\*)
下面是思考与总结。

五、回归问题本身

在做出来后,我上网查询了一下这个问题,它是C语言经典例题(还有名字“约瑟夫问题/约瑟夫环”),并且网上有很多讲解,也有多种方法。
回忆我做这道题时的想法,发现其实赋值0也可以改为赋值-1之类的,只要赋同一个值,非正数就行。
总之,通过这道题目,我领悟到了两个小妙招:
1.“离开/退出”:可以通过赋值0/负数;
2.“围成一圈”:可以通过设置一个变量,在循环到第一个值时继续++就行。

标签:游戏,出来,围成,指针,报数,赋值
From: https://www.cnblogs.com/eleslsel/p/17872130.html

相关文章

  • 跳跃游戏2
    跳跃游戏2难度:简单|中等√|困难-------------------用时:39分钟(第一次)-------------------作题日期:2023-12-01ps:本人理解有限,以下是自我理解,官方和大佬有更完整和详细的解析!!!题目描述题目描述给定一个长度为n的0索引整数数组nums。初始位置为n......
  • 《三国杀》完成鸿蒙原生应用开发,更多游戏品类加入鸿蒙生态
    近日,作为鸿蒙生态游戏先锋合作伙伴之一,游卡网络宣布已完成《三国杀》系列游戏鸿蒙原生应用开发,成为鸿蒙生态首款TOP级桌游卡牌类标杆游戏。作为一个国民级IP,游卡《三国杀》系列游戏与华为游戏中心的深度合作已逾10年,在今年HDC上更荣获了“鸿蒙生态先锋游戏”等重要奖项。依托鸿蒙......
  • 新火种AI | 年烧掉300多亿,张一鸣终究弃了游戏押注AI
    作者:文子张一鸣花6年时间证明:一条路行不通,就换一条路走。游戏终成过往,组建AI新团六年尝试,氪了几百亿,字节游戏终究还是停止了跳动。11月27日,字节跳动官方亲自下场证实,旗下游戏业务朝夕光年将进行大规模业务收缩,对已上线且表现良好的游戏,会在保证运营的前提下寻求剥离;对还未上线的项......
  • 用爱发电,分享快乐,真·免费GM公益服游戏!
    前言首先,我就直奔主题啦,下文中的“网络游戏”和“H5小游戏”是我架设的所有公益服游戏,快来看看有你喜欢的游戏没~如果游戏链接失效了,您可以文末点击“阅读原文”或者直接访问最新的游戏列表:https://echeverra.cn/h5game。还有我的公众号echeverra也会第一时间发布,所有游戏的......
  • Google Play 允许区块链游戏和 NFT 应用进入平台
    为GameFi用户在地域分布与手机机型分布方面与GooglePlay 有众多契合之处:地域分布:东南亚地区用户占比最大,2022年上半年东南亚用户占比达到41%其次是北美和西欧地区用户,2022年上半年占比分别为16%和15%发展中国家用户占比也在快速增长,如菲律宾、越南、印度等机......
  • 开发案例分享:万能卡片也能用来玩游戏
     一、前言作为一名开发爱好者,从大了讲,我学习并进行HarmonyOS相关开发是为了能为鸿蒙生态建设尽一份绵薄之力,从小了讲,就是为了自己的兴趣。而万能卡片是一个让我非常感兴趣的东西。很多时候我跟别人解释什么是万能卡片,都会这么说:"万能卡片能实现让你在不用打开app的前提下,在桌......
  • SQL-聚合函数-550. 游戏玩法分析
    预备知识:1.date_add函数是一个用于在日期上添加指定时间间隔的函数,它的一般语法如下:DATE_ADD(date,INTERVALexpressionunit)date是指定的日期。expression是一个表示要添加的值的表达式。unit是时间单位,例如YEAR、MONTH、DAY、HOUR、MINUTE、SECOND等。例如:......
  • 跳跃游戏
    跳跃游戏难度:简单|中等√|困难-------------------用时:36分钟(第一次)-------------------作题日期:2023-11-30ps:本人理解有限,以下是自我理解,官方和大佬有更完整和详细的解析!!!题目描述题目描述给你一个非负整数数组nums,你最初位于数组的第一个下标......
  • 基于Python的BlackJack游戏项目设计与实现——LW
    本篇论文介绍了基于Python的Blackjack游戏的设计和实现。该游戏是一款经典的赌博游戏,玩家可以在游戏中与电脑进行对战。在系统设计方面,本文首先对需求进行了分析,并采用了面向对象的方法进行了系统的设计。在客户端模块设计中,使用了Pygame库进行图形界面的实现,同时采用了多线程技术......
  • 游戏中模型动画的几种实现方式
    游戏内动画的实现方式一般有这几种:骨骼动画顶点动画材质动画CPU蒙皮动画骨骼动画骨骼动画是一种基于骨骼系统的动画技术,它通过对骨骼进行变换来控制模型的姿态和动作。在骨骼动画中,模型通常被分解成多个部分,每个部分都与一个或多个骨骼相连,通过对骨骼进行旋转、平移、缩放等变换,可......