Javaのアルゴリズムの問題

12人が元の数を残す最後の人を見つけるために、先頭から順に、その後、次の数、出口倍の数に応じて時計回りに開始番号1から、人7の数を1-12からシリアル番号が続く円を形成します。

public static void joseph(int[] array,int n) {
        for (int i = 0; i < array.length; i++) {
            array[i] = i+1;
        }
        // 计数器
        int counter = 0;
        // 剩余人数
        int leftCount = array.length;
        // 索引
        int index = 0;
        while (leftCount > 1) {
            if (array[index]>0) {
                counter++;
                if (counter == n) {
                    counter = 0;
                    array[index] = 0;
                    leftCount--;
                }
            }
            index++;
            if (index == array.length) {
                index = 0;
            }
        }   
        for (int i = 0; i < array.length; i++) {
            if (array[i]>0) {
                System.out.println("剩余人员的位置是" + (i + 1));
            }
        }
    }

    public static void main(String[] args) {
        int [] array = new int[12];
        joseph(array,7);
    }

 

公開された55元の記事 ウォン称賛31 ビュー80000 +

おすすめ

転載: blog.csdn.net/zengfanwei1990/article/details/81661299