zoukankan      html  css  js  c++  java
  • 约瑟夫问题

    一、约瑟夫问题

       1.问题叙述:   

                      

         2.解题思路

            1)构建含有41个结点的单链表,分别存储1-41的值,代表着41个人

            2)使用计数器count,记录当前的值 

            3)遍历链表,每循环一次链表++

            4)判断count的值,如果为三则删除此结点,count置为0

    public class JoseTest{
        public static void main(String[] args) {
            //定义首结点
            Node<Integer> first =null;
            Node<Integer> pre = null;
            //定义循环链表
            for (int i=1;i<=41;i++){
                //1.如果是第一个结点
                if(i==1){
                    first = new Node<>(i, null);
                    pre=first;
                    continue;
                }
                //2.如果不是第一个,创建新结点
                Node<Integer> newNode = new Node<>(i, null);
                //让上一个结点指向当前结点
                pre.next=newNode;
                //重置pre,让pre代表当前结点
                pre=newNode;
                //如果为41个结点时
                if(i==41){
                    pre.next=first;
                }
            }
            //模拟报数
            int count=0;
            //遍历循环链表
            Node<Integer> n=first;
    
            Node<Integer> before=null;
            while (n!=n.next){
                count++;
                if(count==3){
                    //删除该结点,n的上一个结点指向下一个结点
                    before.next=n.next;
                    System.out.print(n.item+",");
                    //重置count
                    count=0;
                    n=n.next;
                }else{
                    before=n;
                    n=n.next;
                }
            }
            //最后一个元素
            System.out.println(n.item);
        }
    
        public static class Node<T>{
            T item;
            Node next;
    
            public Node(T item, Node next) {
                this.item = item;
                this.next = next;
            }
        }
    }
  • 相关阅读:
    初识 Mysql
    Python之协程
    crm 动态一级二级菜单
    admin 后台操作表格
    crm 权限设计
    crm 公户变私户的问题 班级管理 课程管理 学习记录初始化
    crm 添加用户 编辑用户 公户和私户的展示,公户和私户的转化
    crm 数据展示 和分页思想(一)
    python django(forms组件)
    python Django 中间件介绍
  • 原文地址:https://www.cnblogs.com/cqyp/p/12568681.html
Copyright © 2011-2022 走看看