首页 > 代码库 > 约瑟夫问题

约瑟夫问题

理论:

13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。

java实现;

package 经典;public class KickOutBadGuys {        private static final int MAX=26;    private static final int NUM=13;    private static final int STEP=7;        /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub                int[] a=new int[MAX];                for(int i=0; i<MAX; i++)            a[i]=i+1;                int n=MAX;        int count=0;        int j=0;        while(n>NUM)        {            if(a[j]!=-1)                count++;                        if(count==STEP)            {                a[j]=-1;                n--;                count=0;            }                        if(j==MAX-1)                j=0;            j++;        }                for(int i=0 ;i<MAX; i++)            System.out.print(a[i]+",");                    }    }

 

约瑟夫问题