标签:index JAVA int private 约瑟夫 step 集合 josen public
对于约瑟夫问题三种求解方法:
- 数组模拟
- 结构体模拟
- 数学递归
java集合约瑟夫问题第一版(数组模拟)
package txtt;
import java.util.*;
public class Josen {
private int m;
private int n;
private int step;
private List<Integer> josen = new ArrayList<>();
public Josen() {
}
public Josen(int m, int n) {
for(int i = 0;i<n;i++) {
josen.add(1);
}
this.step = m;
setM(m);
setN(n);
}
public int getM() {
return m;
}
public void setM(int m) {
this.m = m;
}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
public void printOut() {
int index = 0;
int lenth = josen.size();
while(lenth !=1) {
while(step>0) {
if(josen.get(index) == 1)
{
step--;
}
if(step>0)
index++;
if(index == n)
index = 0;
}
lenth--;
step = m;
josen.set(index, 0);
System.out.println("第"+(index+1)+"人出局");
}
while(josen.get(index)==0) {
index++;
}
System.out.println("幸存者"+(index+1));
}
}
第一次写的就是数组,和集合没啥关系,就套用了集合的一个容器,集合的简便方法都没用上。所以改一下(利用上集合的remove方法)
java集合约瑟夫问题第二版(数组模拟)
package txtt;
import java.util.*;
public class Josen {
private int m;
private int n;
private int step;
private List<Integer> josen = new ArrayList<>();
public Josen() {
}
public Josen(int m, int n) {
for(int i = 0;i<n;i++) {
josen.add(i);
}
this.step = m;
setM(m);
setN(n);
}
public int getM() {
return m;
}
public void setM(int m) {
this.m = m;
}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
public void printOut() {
int index = 0;
while(josen.size() !=1) {
while(step>0) {
step--;
if(step>0)
index++;
if(index >= josen.size())
index = 0;
}
josen.remove(index);
step = m;
System.out.println("第"+index+"人出局");
System.out.println(josen);
}
}
}
标签:index,JAVA,int,private,约瑟夫,step,集合,josen,public 来源: https://www.cnblogs.com/zhujiaozhu/p/15519402.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。