圆桌子

import java.util.*;


public class kk {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2};
        int target = 3;
        System.out.println(soluction(arr, target));;
       // System.out.println(re);


    }

    public static String soluction(int[] arr, int target)
        {
            StringBuffer sb = new StringBuffer();
            StringBuffer arr_sb = new StringBuffer();
            //ArrayList<Integer> arr_list = new ArrayList<>();
            ArrayList<Integer> list = new ArrayList<>();
            int k = 0;
            int i = 0;
            //target = target;
            for (Integer integer : arr) {
                arr_sb.append(integer);

            }
            int j =0;
            while(arr_sb.length()!= 0)
            {
                //第一次,将报数为k的删除

                for(i = 0;i<arr_sb.length();i++)
                {
                    //k为报数
                    k++;
                    if(k==target && i == arr_sb.length()-1)
                    {
                        sb.append(arr_sb.substring(i,i+1));
                        arr_sb.delete(i, i+1);
                        //下个i要加一
                        i=-1;
                        k =0;
                    }
                    else if(k==target )
                    {
                        sb.append(arr_sb.substring(i,i+1));
                        arr_sb.delete(i, i+1);
                        i = i-1;
                        k =0;
                    }

                }
                //如果k==2,并且是数组的最后一个元素,则第一个元素是要出列的,加入sb,并将i=0;删除第一个元素,下一个从
                //第一个元素开始
                if(i == arr_sb.length() && k==2)
                {

                    i = 0;
                    k=0;
                    sb.append(arr_sb.substring(i,i+1));
                    arr_sb.delete(i, i+1);

                }

                //否则如果是数组的最后一个元素,循环到第一个元素

            }
            return sb.toString();

        }

    }

JAVA 约瑟夫环问题:

import java.util.*;
//

public class kk {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5,6};
        int target = 5;
        System.out.println(soluction(arr, target));;
       // System.out.println(re);


    }

    public static String soluction(int[] arr, int m)
        {
            StringBuffer sb = new StringBuffer();
            StringBuffer arr_sb = new StringBuffer();
            //ArrayList<Integer> arr_list = new ArrayList<>();
            ArrayList<Integer> list = new ArrayList<>();
            for ( int rr:arr) {
                list.add(rr);

            }
            int len = list.size();
            //每次开始的位置
            int k = 0;
            while (len > 1)
            {
                if(k + m <= len)
                {
                    sb.append(list.get(k+m-1));
                    list.remove(k+m-1);
                    k = k + m-1;


                }
                else
                {
                    sb.append(list.get((k+m-1)%len));
                    list.remove((k+m-1)%len);
                    k = (k+m-1)%len;
                }
                len--;
            }
            sb.append(list.get(list.size()-1));
            return sb.toString();

        }

    }

约瑟夫环问题java_java实现简单的约瑟夫环问题

import java.util.*;
//https://www.freesion.com/article/75211427085/

public class kk {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3, 4, 5, 6};
        int target = 5;
        String re = soluction(arr, target);
        System.out.println(re);
        ;
        // System.out.println(re);


    }

    public static String soluction(int[] arr, int m) {
        StringBuffer sb = new StringBuffer();
        StringBuffer arr_sb = new StringBuffer();
        //ArrayList<Integer> arr_list = new ArrayList<>();
        ArrayList<Integer> list = new ArrayList<>();
        for (int rr : arr) {
            list.add(rr);

        }

        //计数
        int t = 1;
        //每次开始的位置
        int i = 0;
        while (!list.isEmpty()) {
            if (t == m) {
                sb.append(list.get(i));
                list.remove(i);

                i--;
                t = 0;
            }

            t++;
            i++;
            if (i >= list.size()) {
                i = 0;
            }
        }
        return sb.toString();


    }
}



更新5.11

package com;

import java.util.ArrayList;

//圆桌
public class comm {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3, 4, 5,6,7};
        int k = 3;
        String re = maxLength(arr);
        System.out.println(re);

    }

    public static String maxLength(int[] arr) {
        StringBuffer s = new StringBuffer();
        StringBuffer sb = new StringBuffer();
        for (int a:arr) {
            s.append(a);

        }
        int p = 0;
        int shu = 1;
        while(p < s.length())
        {
            if(shu == 3){
                sb.append(s.substring(p,p+1));
                s.delete(p,p+1);
                shu = 1;
                if(p>s.length()-1)
                {
                    p = 0;
                }
                continue;
            }
            else{
                shu ++;

            }

            p++;

            if(s.length()!= 0 && p >= s.length()){
                p = p % s.length();
            }
        }
        return (sb.toString());



        // write code here
    }
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值