Day8.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int N;
        N = scan.nextInt();
        int[] array = new int[N];
        for(int i = 0; i < N; i++){
            array[i] = 0;
        }
        int remain = N;
        int flag = 0;
        int j = 0;

        while(remain > 1){
            if(array[j] == 0){
                flag++;
                if(flag == 3){
                    array[j] = 1;
                    remain--;
                    flag = 0;
                }
            }
            j = (j + 1) % N; // 确保下标在 [0, N-1] 范围内循环
        }

        for(int i = 0; i < N; i++){
            if(array[i] == 0){
                System.out.println(i + 1); // 输出最后剩下的人的编号
            }
        }
    }
}

这段代码是一个经典的约瑟夫问题(Josephus problem)的解法。下面是代码的逻辑解释:

  1. 首先通过 Scanner 类获取输入的整数 N,表示参与游戏的人数。
  2. 创建一个大小为 N 的整型数组 array,并初始化所有元素为 0。数组中的每个元素表示对应位置的人是否仍在游戏中,0 表示在游戏中,1 表示已出局。
  3. 使用 remain 变量记录剩余未出局的人数,初始值为 N。
  4. 使用 flag 变量来记录报数的次数,每报数到 3 就将对应位置的人出局。
  5. 使用变量 j 来表示当前报数的人的位置,初始值为 0。
  6. 进入循环,直到剩余未出局的人数为 1,即游戏结束。
  7. 在循环中,判断当前位置的人是否还在游戏中,如果是则增加 flag,当 flag 达到 3 时,将该位置的人标记为出局,同时更新剩余未出局的人数和重置 flag
  8. 更新当前报数的人的位置 j,确保循环报数。
  9. 循环结束后,遍历数组找到最后剩下的人(数组元素值为 0)的位置,并输出其编号(位置加 1)。

相关推荐

  1. Day8.

    2024-03-26 09:42:02       38 阅读
  2. ARM <span style='color:red;'>day</span><span style='color:red;'>8</span>

    ARM day8

    2024-03-26 09:42:02      47 阅读
  3. gorm day8

    2024-03-26 09:42:02       34 阅读
  4. ARM day8

    2024-03-26 09:42:02       30 阅读
  5. <span style='color:red;'>day</span><span style='color:red;'>8</span> ARM

    day8 ARM

    2024-03-26 09:42:02      39 阅读
  6. ARM day8作业

    2024-03-26 09:42:02       38 阅读
  7. ARM.day8

    2024-03-26 09:42:02       38 阅读
  8. ARM-学习day8

    2024-03-26 09:42:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 09:42:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 09:42:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 09:42:02       82 阅读
  4. Python语言-面向对象

    2024-03-26 09:42:02       91 阅读

热门阅读

  1. 华为OD技术面算法题整理

    2024-03-26 09:42:02       39 阅读
  2. 大模型日报2024-03-25

    2024-03-26 09:42:02       47 阅读
  3. 每个字符最多出现两次的最长子字符串(c++实现)

    2024-03-26 09:42:02       46 阅读
  4. 基于深度学习的图像分类方法

    2024-03-26 09:42:02       42 阅读
  5. Android SO加固技术及其破解方法探讨

    2024-03-26 09:42:02       37 阅读
  6. Android中View和ViewGroup有什么区别和联系

    2024-03-26 09:42:02       38 阅读
  7. Git本地更新仓库改动

    2024-03-26 09:42:02       40 阅读
  8. 取消uniapp的scroll-view滚动条

    2024-03-26 09:42:02       43 阅读
  9. 二进制王国【蓝桥杯算法双周赛】

    2024-03-26 09:42:02       42 阅读
  10. 鲁棒的设计

    2024-03-26 09:42:02       39 阅读