java编程序实现约瑟夫环 5

 我来答
男生_s
2015-12-04
知道答主
回答量:5
采纳率:0%
帮助的人:6046
展开全部
精简易懂版本 刚写的
public class Yuesefu {

// 数三退一 约瑟夫环 求最后留在环中小朋友的位置 即原来的编号(1-500)
/**
* 初始化数组,添加标号
*/
private void markID(int[] child) {
for (int i = 0; i <= child.length - 1; i++) {
child[i] = i + 1;
}
}

/**
* 求出小孩子原来的位置在什么地方,从一开始
*/
public void re_index(int[] i) {
for (int ii : i) {
if (ii > 0) {
System.out.println("还在场内的小朋友的序号为 : " + ii);
}
}

}

/**
* 统计剩余的同学
*/
public int record(int[] re) {
int reco = 0;
for (int i : re) {
if (i > 0) {
reco = reco + 1;
} else {
continue;
}
}
// System.out.println("目前还剩下:" + reco + " 个小朋友在圈圈里面");
System.out.println("程序努力加载计算中.............................................................................................." + reco);
return reco;
}

public static void run() {
int childs[] = new int[500];
Yuesefu yuesefu = new Yuesefu();
yuesefu.markID(childs);
yuesefu.startGame(childs);
yuesefu.re_index(childs);
}

/**
* 游戏开始
*/
private void startGame(int[] i) {
int index = 0; // 用作循环
int leave = 0; // 用作离场
while (true) {
if (i[index] != 0) {// 还在场内
leave = leave + 1; // 报数

if (leave == 3) {// 判断是否需要离场 需要
i[index] = 0; // 离场
leave = 0;// 重新报数
}

index = index + 1;// 下一个人预备
if (index == i.length) {// 已经到最后了 需重新循环
index = 0;
}

} else {// 不在场内

if (index == i.length - 1) {// 判断此出场的人是否为最后一个人
index = 0;
}
index = index + 1;// 跳过
}

int x = new Yuesefu().record(i);// 统计剩余人数
if (x == 1)

break;
}

}

public static void main(String[] args) {
// TODO Auto-generated method stub
run();
}

}
qqulijun
2006-06-03 · 超过14用户采纳过TA的回答
知道答主
回答量:231
采纳率:0%
帮助的人:0
展开全部
什么意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式