码迷,mamicode.com
首页 > 编程语言 > 详细

约瑟夫环问题-Java数组解决

时间:2015-10-09 00:43:53      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

  约瑟夫环问题说的是,n个人围成一圈,从第k个人开始沿着一个方向报数,报到第m个人时,第m个人出列,从紧挨着的下一个人(未出列)开始,求整个环中人的出列顺序。下面是我用java实现的解决方法。

  

 1 class JosephLoop
 2 {    //n为环中人数,m为每次报数的人数,k为报数的起始位置0-n
 3     int n,m,k;
 4     int[] persons;
 5     int[] seq;
 6     
 7     JosephLoop(int n, int k, int m){
 8         this.n = n;
 9         this.m = m;
10         this.k = k;
11         persons = new int[n];
12         seq = new int[n];
13 
14     }
15     
16     public void showSeq(){
17         for (int x:seq )
18         {
19             System.out.print(x+" ");
20         }
21     }
22     
23     public void calcLoop(){        
24         for(int j=0;j<n;j++)
25         {    
26             int index=k;
27             for (int i=0; i<m ; index++)
28             {
29                 if (persons[index%n]==0)
30                 {
31                     i++;
32                 }
33             }
34             persons[(index-1)%n] = 1;
35             seq[j] = (index-1)%n;
36             k = (index)%n;
37         }
38     }
39 
40 }
 1 class LoopTest 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         JosephLoop jose = new JosephLoop(12,5,4); //n,k,m
 6         jose.calcLoop();
 7         jose.showSeq();
 8         
 9     }
10 }

 

约瑟夫环问题-Java数组解决

标签:

原文地址:http://www.cnblogs.com/youilika/p/4862747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!