程序员的算法趣题——翻牌

程序员的算法趣题——翻牌

这里有 100 张写着数字 1~100 的牌,并按顺序排列着。最开始所有
牌都是背面朝上放置。某人从第 2 张牌开始,隔 1 张牌翻牌。然后第 2,
4, 6, …, 100 张牌就会变成正面朝上。
接下来,另一个人从第 3 张牌开始,隔 2 张牌翻牌(原本背面朝上
的,翻转成正面朝上;原本正面朝上的,翻转成背面朝上)。再接下来,
又有一个人从第 4 张牌开始,隔 3 张牌翻牌。
像这样,从第 n 张牌开始,每隔 n- 1 张牌翻牌,直到没有可翻动
的牌为止。
程序员的算法趣题——翻牌_第1张图片

package com.java.test01;
public class test02 {
    public static void main(String[] args) {
        int[][] arr;
         arr = new int[100][2];
        //初始化0到100的数组
        //用一个数组,存0和1;表示是否翻牌
        for(int i=0;i<100;i++){
            arr[i][0]=i+1;
            arr[i][1]=0;
        }
        int num=2;
        boolean post=true;
       while (post){
           for(int i=-1;i<100;){
               i=i+num;
               if(i>=100){
                   break; }
               if(arr[i][1]==0){
                   arr[i][1]=1;
                    }else arr[i][1]=0;
               if(num>=100) {
               post=false;
               }
           }
           num++;
       }
       for (int i= 0;i<100;i++){
           if (arr[i][1]==0){
               System.out.println(arr[i][0]);
           }
       }
    }
}

来自Java初学者憨憨

你可能感兴趣的:(算法,算法,java)