约瑟夫环问题(100围坐一圈报数,报3出圈)

100个人编号1-100,围坐一圈,从1号开始进行1,2,3报数,谁报数为3,就离开圈子,剩下的人继续报1,2,3,报数为3的出圈。。。

请写一段程序,计算最后一个留下来的人,他的编号

 1 package com.ycl.test;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 public class Test1 {
 7     public static void main(String[] args) {
 8         int count = 0;
 9         List<Integer> list = new ArrayList<Integer>();
10         for (int i = 1; i <= 100; i++) {
11             list.add(i);
12         }
13         while (list.size() > 0) {
14             for (int i = 0,j = list.size();i<j; i++) {
15                 ++count;
16                 if(count==3){
17                     count=0;
18                     list.remove(i);
19                     --i;
20                     --j;
21                     continue;
22                 }
23             }
24             if(list.size()==1){
25                 System.out.println("Last Number:"+list.get(0));
26                 break;
27             }
28         }
29     }
30 }

 

    原文作者:fengqixueluo
    原文地址: https://www.cnblogs.com/BeautyInWholeLife/p/7465857.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞