1:有N个人围成一圈,第一个人从1开始报数,报到M的人出列,求最后一个出列的人, 约瑟夫环问题。
public void testTest() {
String[] people = { "1", "2", "3", "4", "5" };
int M = 10;
int length;
int m;
while ((length = people.length) != 1) {
// 比方说有5个人,数到9,就要转一轮然后继续
if (M > length) {
// 如果是整除,最后一位被出局
m = M % length == 0 ? length : M % length;
} else {// 正常情况
m = M;
}
String[] temp = new String[length - 1];
// 把m之后的人放到前面,因为m之后的重新开始从1开始,
// m-1这要考虑数组是从0开始的,而数数是从1开始的,然后数据的拷贝是从m开始的
// 比方说5个人,数到4出局,第5个人开始为1,就数组而言是标记为4开始为1,拷贝的长度为1个
System.arraycopy(people, m, temp, 0, length - m);
// 比方说5个人,4出局,第5个排到第一位,然后依次是原先的1,2,3
System.arraycopy(people, 0, temp, length - m, m - 1);
// 重新排序,重新开始
people = temp;
}
System.out.println(people[0]);
}
最简单但是最难懂的方法:
f(1,m)=0
f(n,m)=(f(n-1,m)+m)%n
public int find(int n, int m)
{
int r = 0;
for (int i = 2; i <= n; i++) {
r = (r + m) % i;
}
return r + 1;
}
分享到:
相关推荐
在Java面试中,编程题是评估候选人技术能力的重要环节。本压缩包文件包含了一系列常见的Java编程题目,旨在帮助学习者巩固基础,提高解决问题的能力。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,通过不断...
java面试编程题 里面包括我所收集到的各个公司的面试题,希望对大家有所帮助
收集汇总各行业笔试or编程题解题思路 技术类: 包括 Java 集合、JVM、多线程、并发编程、设计模式、SpringBoot、SpringCloud、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL...
Linux C 网络编程面试题收集 本文总结了 Linux C 网络编程面试题,涵盖了基础知识、网络编程、路由等方面的知识点,旨在帮助读者更好地理解和掌握相关知识。 一、基础知识 1. 对于程序 `func(char *str){printf(...
Java面试是评估程序员技术能力的重要环节,而Java面试代码与编程题则是衡量候选人对语言掌握程度、解决问题能力和逻辑思维的关键标准。以下是一些基于Java面试的常见知识点,这些知识点不仅适用于面试,也是日常开发...
描述:Linux C/网络/网络编程面试题收集| 经典实例找工作的朋友可以看一下啊 从标题和描述中可以看出,本文的主要内容是收集了一些常见的 Linux C 网络面试题,旨在帮助找工作的朋友更好地准备面试。 二、标签 ...
### JAVA面试编程题知识点详解 #### 一、String与StringBuilder、StringBuffer的区别 - **String**: 不可变的字符序列,适用于操作少量的数据。当字符串的内容不再改变时使用String,这样可以利用其不可变性带来的...
linux c网络网络编程面试题收集.doc
Java并发编程面试题 75题.pdf JAVA核心面试知识点整理.pdf Java垃圾收集必备手册.pdf Java虚拟机(JVM)面试题 51道.pdf SpringBoot面试题 30道.pdf Spring面试题(含答案).pdf 多线程面试59题(含答案).pdf 面试...
Java作为一门广泛使用的编程语言,其经典编程题的掌握对于开发者来说至关重要,无论是为了日常工作中的问题解决,还是准备面试,都是提升自身技能的有效途径。这个压缩包“Java经典编程题汇总”显然是一份宝贵的资源...
Java编程题全集及面试题合集是一份涵盖了大量Java编程练习题和面试问题的资源,旨在帮助开发者提升技能和准备求职面试。这份资料包括了"JAVA编程题全集(100题及答案).doc"文档和"Java面试题以及答案.pdf",两者都...
本资源收集了大量的Java面试题,旨在帮助读者熟悉Java编程语言以及相关的编程技术和知识点,从而在面试中更好地展现自己的能力和潜力。本资源主要包括Java基础知识、Java集合、多线程、IO操作、网络编程、数据库等...
通过这个面试题集合,你可以系统地复习和深化这些关键知识点,提高你的面试表现和实际编程能力。同时,对于面试中可能出现的问题,如项目经验、问题解决能力、团队合作等软性技能,也要进行充分准备。只有全面准备,...
Java面试题集锦涵盖了广泛的Java基础知识,JSP与Servlet技术,J2EE相关知识以及其他一些IT领域的要点。以下是对这些知识点的详细说明: 1. **Java基础** - Java有八种基本数据类型:byte, short, int, long, float...
Java面试题是每个Java开发者在求职过程中必须面对的挑战,尤其在西安这样的技术密集型城市,竞争尤为激烈。本资料集包含了丰富的Java面试题、西安地区常见面试问题以及SQL相关题目,旨在帮助求职者全面准备,顺利...
代码与编程题.doc 华为Java笔试题.txt 单元测试、集成测试、系统测试、验收测试、回归 某公司java笔试题.(超难).txt 白盒测试.txt 软件开发工程师试题---答案.doc 软件测试.doc 软件测试面试题.txt 黑盒测试、白盒...
这可能包括编程题、系统设计题、算法题以及相关的软技能问题。对于准备IT行业的求职者来说,这些题目可以帮助他们了解和准备可能会遇到的挑战。 描述中的"名企面试真题"进一步确认了这些问题是来自知名企业的,这...
.NET面试题是评估应聘者对.NET框架理解和应用能力的重要方式,涵盖了从基础概念到高级特性的广泛知识领域。以下是一些可能出现在.NET面试中的关键知识点: 1. **.NET框架基础**:理解.NET Framework的基本结构,...
【一线互联网大厂Java核心面试题库】Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等..