约瑟夫环
package A;
public class Josephu {
public static void main(String[] args) {
Manage1 manage1=new Manage1();
manage1.addBox(5);
manage1.showBox();
manage1.countBox(1,2,5);
}
}
package A;
public class Manage1 {
Box first=null;
public void addBox(int nums){
if (nums<1){
System.out.println("nums必须大于或等于1");
return;
}
Box temp=null;
for (int i = 1; i <= nums; i++) {
Box box=new Box(i);
if (i==1){
first=box;
first.setNext(first);
temp=first;
}else {
temp.setNext(box);
box.setNext(first);
temp=box;
}
}
}
public void showBox(){
if (first==null){
return;
}
Box temp=first;
while (true){
System.out.println("bhao:"+temp.getId());
if (temp.getNext()==first){
break;
}
temp=temp.getNext();
}
}
public void countBox(int startId,int countNum,int nums){
if (first==null||startId<1||startId>nums){
System.out.println("输入有误");
return;
}
Box helper=first;
while (true){
if (helper.getNext()==first){
break;
}
helper=helper.getNext();
}
for (int j=0;j<startId-1;j++){
first=first.getNext();
helper=helper.getNext();
}
while (true){
if (helper==first){
break;
}
for (int j=0;j<countNum-1;j++){
first=first.getNext();
helper=helper.getNext();
}
System.out.println("小孩跳出圈"+first.getId());
first=first.getNext();
helper.setNext(first);
}
System.out.println("最后留在圈中的是"+first.getId());
}
}
package A;
public class Box {
private int id;
private Box next;
public Box(int id){
this.id=id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Box getNext() {
return next;
}
public void setNext(Box next) {
this.next = next;
}
}
这一路,灯火通明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现