【算法】1、约瑟夫环

简介: 有n 个人围城一圈每次从1数起数到3就把那个人提出圈子,最后只保留一个人。 输入: 输入人数字符串输出:把最后一个人所保留位置返回出来。比如你输入11 的话即有11个人 [1,2,3,4,5,6,7,8,9,10,11] 。

 

有n 个人围城一圈每次从1数起数到3就把那个人提出圈子,最后只保留一个人。

输入: 输入人数字符串
输出:把最后一个人所保留位置返回出来。
比如你输入11 的话即有11个人 [1,2,3,4,5,6,7,8,9,10,11] 。返回的是7

 

解题:

 

package sj1;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 *
 * @author Administrator
 *  剔出某数字
 */
public class sjt1_2 {
     
    int number; //总数
    int m;//要被剔除的数字
 
    /**
     * 剔除方法
     * @param number 总数
     * @param m 数数剔除的数字,比如3
     */
    public static void delete(int number, int m) {
        List<Integer> ins = new ArrayList<Integer>();
         
        /* 塞数字 */
        for (int i = 1; i < number+1; i++) {
            ins.add(i);
        }
        
        System.out.println("构造了原始值:" + ins);
 
        int index = 0;// 被T的人在列表中下标
        m = m-1;//减一算出下标
        for (int i = 0; i < number; i++) {
            //最后一个跳出
            if(ins.size() ==1 ){
                break;
            }
            // 从0开始数数
            index = (index + m) % ins.size();//核心算法
            System.out.println(index);
            System.out.println("第 ["+(i+1)+"] 次剔除了" + ins.get(index));
            ins.remove(index);
            System.out.println("还剩下:" + ins);
        }
         
    }
 
    public static void main(String args[]) {
        delete(11, 3);
    }

 

目录
相关文章
|
5月前
|
算法 C语言
约瑟夫环的C语言和86/88汇编非递归算法
约瑟夫环的C语言和86/88汇编非递归算法
55 0
|
算法 索引 Python
Python|约瑟夫环算法
Python|约瑟夫环算法
85 0
|
算法 C++ Python
【每日算法Day 85】图解算法:一行代码解决约瑟夫环的变体
【每日算法Day 85】图解算法:一行代码解决约瑟夫环的变体
106 0
|
存储 算法 C++
【每日算法Day 74】经典面试题:约瑟夫环,我敢打赌你一定不会最后一种方法!
【每日算法Day 74】经典面试题:约瑟夫环,我敢打赌你一定不会最后一种方法!
|
机器学习/深度学习 自然语言处理 算法
|
机器学习/深度学习 自然语言处理 算法
再学一道算法题:危险的七(约瑟夫环问题)
这是一道学校acm基地招新的题    我之前也写过一道有几分相似的题,所以比赛的时候写的快一点,但是也没有完全理解,容易自己都搞混,有朋友问我的解题思路时,我也讲错,这大可能是自身能力不够,这提醒我还需要继续提升自己的实力
再学一道算法题:危险的七(约瑟夫环问题)
|
4天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于MSER和HOG特征提取的SVM交通标志检测和识别算法matlab仿真
### 算法简介 1. **算法运行效果图预览**:展示算法效果,完整程序运行后无水印。 2. **算法运行软件版本**:Matlab 2017b。 3. **部分核心程序**:完整版代码包含中文注释及操作步骤视频。 4. **算法理论概述**: - **MSER**:用于检测显著区域,提取图像中稳定区域,适用于光照变化下的交通标志检测。 - **HOG特征提取**:通过计算图像小区域的梯度直方图捕捉局部纹理信息,用于物体检测。 - **SVM**:寻找最大化间隔的超平面以分类样本。 整个算法流程图见下图。
|
6天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
该算法结合了遗传算法(GA)与分组卷积神经网络(GroupCNN),利用GA优化GroupCNN的网络结构和超参数,提升时间序列预测精度与效率。遗传算法通过模拟自然选择过程中的选择、交叉和变异操作寻找最优解;分组卷积则有效减少了计算成本和参数数量。本项目使用MATLAB2022A实现,并提供完整代码及视频教程。注意:展示图含水印,完整程序运行无水印。