求各位大神给个用java语言实现约瑟夫生死实验的代码,实验内容:30个游
求各位大神给个用java语言实现约瑟夫生死实验的代码,实验内容:30个游客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全船一半的客户投入还中...
求各位大神给个用java语言实现约瑟夫生死实验的代码,实验内容:30个游客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全船一半的客户投入还中,其余人才能幸免遇难。无奈,大家只得同意这种办法,并议定30个人围成一圈,由第一个人数起,依次报数,数到第9人,便把他投入大海中,然后再从他的下一个人数起,数到第9人,再将他扔进大海中,如此循环地进行,直到剩下15个乘客为止。问哪些位置是将被扔下大海的位置。
展开
展开全部
public static void main(String[] args) {
int[] indexs = new int[15];
int[] tourists = new int[30];
for (int i = 0; i < tourists.length; i++) {
tourists[i] = 1;
}
// 30,9,15
for (int i = 0, j = 1, n = 0; n < 15; i++) {
if (j == 9 && tourists[i] != 0) {
tourists[i] = 0;// 将游客标记为下海
indexs[n] = i + 1;// 记录游客位置
n++;// 记录下海游客数量
j = 1;// 重开始计数
}
if (tourists[i] != 0) {// 如果数到的游客未被标记为下海,就计数
j++;
}
if (i == tourists.length - 1) {// 到达游客数组末尾,再从头开始。
i = -1;
}
}
System.out.println("被扔下大海的位置:");
for (int i = 0; i < indexs.length; i++) {
System.out.print(indexs[i]+",");
}
}
int[] indexs = new int[15];
int[] tourists = new int[30];
for (int i = 0; i < tourists.length; i++) {
tourists[i] = 1;
}
// 30,9,15
for (int i = 0, j = 1, n = 0; n < 15; i++) {
if (j == 9 && tourists[i] != 0) {
tourists[i] = 0;// 将游客标记为下海
indexs[n] = i + 1;// 记录游客位置
n++;// 记录下海游客数量
j = 1;// 重开始计数
}
if (tourists[i] != 0) {// 如果数到的游客未被标记为下海,就计数
j++;
}
if (i == tourists.length - 1) {// 到达游客数组末尾,再从头开始。
i = -1;
}
}
System.out.println("被扔下大海的位置:");
for (int i = 0; i < indexs.length; i++) {
System.out.print(indexs[i]+",");
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询