剑指offer!

经验
一、1.要循环用到某些数字如1-3,要想到%的用法。
    2.要去掉数组的某个元素又不想改变下标,就设置boolean[],将想删除的置为false。

一、循环报数游戏,有n个人,报数从1-3,每次报到3的人退出游戏,得到最后获胜人的编号(编号从0开始)


 */
public class practice {
    
    
    public static void findmum(boolean arr[],int n){
    
    
        int count =n;//7
//        System.out.println(arr[0]);
        for (int i = 0,j=0; true; ) {
    
    
            if(arr[j]==true){
    
    
                if ((i+1)%3==0){
    
    
                    arr[j]=false;
                    count--;
                    i++;
                    j=(j+1)%n;
                }else {
    
    
                    i++;
                    j=(j+1)%n;
                }

            }else {
    
    
                j=(j+1)%n;
            }
            if (count==1){
    
    
                break;
            }
        }
        for (int i=0;i<n;i++){
    
    
            if (arr[i]==true){
    
    
                System.out.println("最后一个编号是"+i);
            }
        }

    }
    public static void main(String[] args) {
    
    
        System.out.println("请输入人数n");
        Scanner scanner =new Scanner(System.in);
        int n = scanner.nextInt();
        boolean arr[] =new boolean[n];
        for (int i=0;i <n;i++){
    
    
            arr[i] = true;
        }
        findmum(arr,n);

猜你喜欢

转载自blog.csdn.net/weixin_47198561/article/details/114490241
今日推荐