欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java 猴子称大王

程序员文章站 2022-09-14 09:10:25
思路:num为数组长度;维持一个同长度的数组,用来记录对应下标元素是否为标记,点中的猴子被标记 为0,即为淘汰,直至num=0时的那个元素即为最后一个猴子import java.util.Scanner;public class demo {/* * 猴子选大王 */public static void main(String[] args) {Scanner sc = new Scanner(System.in);int num = sc.nextInt();...

思路:

num为数组长度;维持一个同长度的数组,用来记录对应下标元素是否为标记,点中的猴子被标记 为0,即为淘汰,直至num=0时的那个元素即为最后一个猴子

import java.util.Scanner;

public class demo {

	/*
	 * 猴子选大王
	 */
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int n = num;
		int point = -1;
		int reslut = 0;

		int[] arr = new int[num];

		for (int i = 0; i < arr.length; i++) {
			arr[i] = 1;
		}

		while (num > 0) {

			for (int i = 0; i <= 2; i++) { // 报数
				point = (point + 1) % n;
				while (arr[point] == 0) {//如果已经出列就
				                        //让下一个未出列的猴子报数
					point = (point + 1) % n;
				}
				if (i == 2 && arr[point] == 1) {// 出列
					arr[point] = 0;

					reslut = point + 1;
					num--;
				}

			}

			if (num == 0) {
				System.out.println(reslut);
			}
		}

	}
}

本文地址:https://blog.csdn.net/yeyinfan123/article/details/107144318