• 一群人围成一圈从123报数,如果报到3就退出该圈中,直到最后一个人留下来!


    package com.pb.demo1;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * 一群人围成一圈从123报数,如果报到3就退出该圈中,直到最后一个人留下来!
     * 约瑟夫的游戏
     */
    public class Demo1 {
    
        public static void main(String[] args) {
            //声明值一个扫描器的变量
            Scanner input =new Scanner(System.in);
            System.out.println("请输入参数游戏的人数:");
            String str=input.next();
            //判断是不是数字
            String regx="\d+";
            Pattern p=Pattern.compile(regx);
            Matcher m=p.matcher(str);
            int num=0;
            if(m.matches()){
                //如果是数字就转换为数字
                num=Integer.parseInt(str);
            }else{
                //如果不是数字终止
                System.out.println("输入的不是数字:结果为0");
                return ;
            }
            //为每个人编号
            List<Integer> list=new ArrayList<Integer>();
            for (int i = 0; i < num; i++) {
                //编号从一开始
                list.add(i+1);
            }
            
            //定义游戏要退出的变量
            int  cursor=0;
            //开始游戏只到最后一人是结束
            while(list.size()>1){
                for (int i = 0; i <list.size(); i++) {
                    //游戏开始游标+1
                    cursor++;
                    if(cursor%3==0){
                        list.remove(i);
                        //游标重新开始并归零
                        cursor=0;
                        //人数-1
                        i--;
                    }
                    
                }
            }
            System.out.println("集合的大小:"+list.size());
            System.out.println("最后的人编号是:"+list.get(0));
        }
    
    }
  • 相关阅读:
    整数因子分解问题(递归分治法、动态规划)
    背包问题(动态规划 C/C++)
    划分问题(Java 动态规划)
    算法:Common Subsequence(动态规划 Java 最长子序列)
    算法:矩阵连乘(Java)动态规划
    Frogs‘ Neighborhood(POJ 1659 C/C++)
    算法:线性时间选择(C/C++)
    sort(hdu oj 1425)计数排序和快速排序
    快速排序(递归和分治)
    a^b(取模运算)
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4421112.html
Copyright © 2020-2023  润新知