zoukankan      html  css  js  c++  java
  • 约瑟夫环(排成圈)

    /**
    * 约瑟夫环问题主要是考虑下标问题,只要解决了下标控制问题,这个题目就不难了
    * 在这里我是分成了3中情况:
    * 1,下标小于剩余人数时:删除当前元素,并将下标后移
    * 2.下标大于剩余人数时:用下标对剩余人数取于,删除元素,并下移下标
    * 3.下标等于剩余人数或者是剩余人数的倍数的时候:移除最后一个元素,并让下标后移
    */

     1 import java.util.LinkedList;
     2 import java.util.Scanner;
     3 
     4 public class StudentCode {
     5 
     6     public static void main(String[] args) {
     7         LinkedList<Integer> al=new LinkedList<Integer>();
     8         Scanner sc=new Scanner(System.in);
     9         int m=sc.nextInt();
    10         int n=sc.nextInt();
    11         //初始化队列,给每个元素赋值
    12         for(int i=0;i<m;i++){
    13             al.add(i+1);
    14         }
    15         int index=n;
    16         int t=0;
    17         while(al.size()!=1){
    18             //第一种情况
    19             if(index<al.size()){
    20                 //下标和逻辑值相差1(逻辑下标从1开始,实际下标从0开始)
    21                 al.remove(index-1);
    22                 //逻辑下标后移
    23                 index=index+n-1;
    24             }else if((index)%al.size()!=0){
    25                 //第二种情况
    26                 t=(index)%al.size();
    27                 index=t+n-1;
    28                 al.remove(t-1);
    29             }else if((index)%al.size()==0||index%al.size()==0){
    30                 //第三种情况
    31                 al.removeLast();
    32                 index=1+n-1;
    33             }
    34         }
    35         //输出元素
    36         System.out.println(al.get(0));
    37     }
    38 }
  • 相关阅读:
    java学习day2--java和javac命令的使用
    java学习day1--了解java及JDK环境变量的配置
    idea 修改console 日志区的背景
    微信的storage的操作
    python 基础
    shiro标签说明
    IDEA 修改编辑区的背景颜色
    java注解
    java的反射
    创建一个maven项目
  • 原文地址:https://www.cnblogs.com/zxxiaoxia/p/4244924.html
Copyright © 2011-2022 走看看