猴子大王:
求猴子大王
15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子称为大王,问:哪只猴子会成为大王?
代码
解法一:
package com.company.day11;/*
Author:
date:
problem:7、求猴子大王
15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子称为大王,问:哪只猴子会成为大王?
问题:你没有办法跳回到索引值为1的数组
1.定义一个长度为15的数组,for循环遍历数组把1-15赋值
2定义一个计数器(判断是不是等于7),一个操作数(等于7的有几个,操作了几次)
3.if判断计数器count为7就赋值0给对应的数组。
4.把元素值为0的数组删除,即if判断不为0的元素,把不为0的元素放到一个新的数组中
5.返回新的数组的地址
6.用一个变量接收数组的值,输出
*/
public class monkeyprime {
//下标代表每只猴子
static int[] monkey1 = new int[15];
public static void main(String[] args) {
//循环数组把值赋值给数组
for (int i = 0; i < monkey1.length; i++) {
monkey1[i] = i;
}
monkey(monkey1);
//把返回的值赋给monkey2
int[] monkey2=monkey(monkey1);
System.out.println("大王是"+monkey2[0]);
}
public static int[] monkey(int[] monkey1) {
//判断等于7的猴子,等于7那么就把0赋值给他
int count = 0;//计数器
while (monkey1.length != 1) {
int c = 0;//淘汰次数
for (int i = 0; i < monkey1.length; i++) {
count++;
if (count == 7) {
monkey1[i] = 0;
count = 0;
c++;
}
}
//改变数组长度,把等于0的元素除去
/*
1.定义一个新的数组,接收不为0的元素。
*/
int monkeyarr1[] = new int[monkey1.length - c];
int index = 0;
for (int i = 0; i < monkey1.length; i++) {
if (monkey1[i] != 0) {
monkeyarr1