数3退1

我在网上找了些JAVA的视频,学习了一下。老师讲了一道题,有500个小孩拉成一个圈,开始123123这样报数,数到3的小孩退出圈外,问:剩下最后一个小孩的位置是多少。

我跟着老师的思路缕了一下,然后自己盲打了一下代码,感觉很复杂,所以把代码copy下来,留给日后复习用。(结果:435)

//数3退1
public class Count3Quit1 {

    public static void main(String[] args) {

        boolean[] arr = new boolean[500];
        for(int i = 0; i < arr.length; i++){
            arr[i] = true;
        }
        int leftCount = arr.length;    //剩余小孩数初始化
        int countNum = 0;            //计数器(数3退1)初始化
        int index = 0;                //下标值初始化
        while(leftCount > 1){
            if(arr[index] == true){
                countNum ++;
                if(countNum == 3){    //计数器数到3
                    arr[index] = false;//从true变为false意为让小孩退出
                    countNum = 0;    //计数器归0
                    leftCount --;    //剩余小孩数-1
                }
            }
            index ++;                //下标值
            if(index == arr.length){//(0-499)当下标为第500时,一圈循环完毕,开始再一次循环,初始化下标
                index = 0;
            }

        }
        for(int i = 0; i < arr.length; i++){
            if(arr[i] == true){
                System.out.println(i);//打印最后剩下小孩的位置
            }
        }
    }

}
时间: 2024-10-06 09:36:55

数3退1的相关文章

数3退1问题

问题描述: 假设有500个小孩手拉手围成一圈,从第一个小孩开始数数,按照1.2.3.1.2.3循环不断的数,数到3的小孩退出圈,其他小孩接着数,直到剩下一个小孩,问这个小孩的排在什么位置? 实例分析: 假设有5个小孩,K-K-K-K-K,(用一个字母K表示一个小孩,若某小孩退出了,用Q表示:若某小孩数1,则用1表示该小孩:若某小孩数2,则用2表示该小孩:若某小孩数3,则用3表示该小孩:若小孩还没有数,则仍然用K表示该小孩): 步骤描述: Step1: K-K-K-K-K Step1.1: 1-K

给想上MIT的牛学生说几句

[来信] 老师您好! 非常冒昧的来打搅您,仅仅是在学习上实在有些困惑才来向您求教一番. 我是计算机科学与技术的大一学生,我非常喜欢我自己的专业,可是学校里讲的东西太慢,太浅,所以我一般都是自学,我在自学的时候最大的问题不是学习本身的问题,而是方向的问题,我学的东西非常杂,在这大半段的大一生活里,我学了C,一些win32编程,另一些简单的socket编程,还学了一些C通过ODBC操作数据库.如今我正在学数据结构和算法,我打算未来的一段时间里一门心思搞数据结构和算法,可是我不知道在学习数据结构的过程

Java基础复习笔记系列 四

Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时,不能指定其长度.不同于C 数组的小标可以是整型常量或整型表达式. .length方法是显示数组的长度:数组.length;String.length();一个是属性,一个是方法.注意区分. 2.数组的内存分析? Array a[]; a = new Integer(15); /*这个a在栈中,在堆

VB.Net版机房收费系统 ---数据库设计

数据库设计是根据用户需求设计数据库结构的过程,具体来说,数据库设计是对于给定的应用环境,在厝数据库理论的指导下,构造最优的数据库模式,在数据库管理系统上建立数据库及其应用系统,使之能有效地存储数据,满足用户的各种需求的过程.到底数据库该如何设计,古往今来,每个人都有每个人的想法,所以数据库设计并没有优劣之分,好坏之别,合适的数据库设计就是最好的. 走过自考--<数据库系统原理>,看过耿建玲老师的视频,对数据库设计有了一点了解,VB版的机房收费系统,直接用原来的脚本生成的数据库,当时对数据库设计

数据库设计---合适的就是最好的

数据库设计是依据用户需求设计数据库结构的过程,详细来说.数据库设计是对于给定的应用环境,在厝数据库理论的指导下,构造最优的数据库模式,在数据库管理系统上建立数据库及其应用系统,使之能有效地存储数据.满足用户的各种需求的过程.究竟数据库该怎样设计,古往今来,每一个人都有每一个人的想法,所以数据库设计并没有优劣之分,好坏之别,合适的数据库设计就是最好的. 走过自考--<数据库系统原理>,看过耿建玲老师的视频.对数据库设计有了一点了解,VB版的机房收费系统,直接用原来的脚本生成的数据库,当时对数据库

每日一练第7天:蛇形填数

蛇形填数.在n×n方阵里填入1,2,...,n×n,要求填成蛇形. 例如,n=4时方阵为: 10 11 12  1 9 16 13  2 8 15 14  3 7   6   5  4 解决此题的一个重要原则就是先判断下一个要填的位置是否满足条件,再填数.不是发现了不能填再退回来. 代码如下: 1 #include <stdio.h> 2 #include <string.h> 3 #define MAXN 100 4 int matrix[MAXN][MAXN]; 5 6 int

pointer-events/H5页面在iphone6 plus的微信上出现闪退

一.pointer-events 1.元素加上pointer-events:none后,在js中加点击事件不好使 原因:pointer-events:none关闭所有点击事件,包括js总的 解决:删掉该属性 2.移动端开发,页末尾的按键点击不好使 原因:为了适配大屏幕,下一页有元素图片切得比较大,当用户滑到上一页时,下一页元素覆盖了该按钮. 解决:在下一页元素上加pointer-events:none 二.H5页面在iphone6 plus的微信上出现闪退 原因:h5页数较多,并且每页中动画和元

被315曝光的瓜子二手车,退车激增,融资无望

对于很多企业来说,315可能是公关团队的不眠之夜,也可能会成为企业生命的重要转折点.在目前正火爆的二手车行业,除了车易拍在央视315被报道,大打广告的瓜子二手车直卖网也因出售事故车.调表车.混杂车商不直卖等问题,被全国多地电视台315专题曝光,暴露的问题比车易拍更严重.坊间流传一个说法是,"车易拍要钱,瓜子二手车要命".这对本来就因为融资不顺而焦头烂额的瓜子二手车来说,无异于雪上加霜. 315北京.成都重镇失守,口碑崩盘 北京315晚会上,瓜子二手车因出售调表车上榜.北京王先生在瓜子二

和为s的两个数,一串连续数 41

? ? 引言 ? ? 第一问题很简单,leetcode上也有相应的题,2Sum问题,leetcode上还有2Sum的进阶版3Sum,只是在这个问题上增加了一层循环而已,另外还有3Sum_Close问题,就是和接近s的三个数,本文将依次介绍2Sum问题,3Sum问题,以及3Sum_close,以及一串连续数问题 ? ? 对于3Sum的问题,本文除了常用的退化为2Sum的n平方的解法外,还提供了一种hash的方法,使得利用hash的方法使得4Sum问题不再是n三次方的时间复杂度,可以降到n平方的时间