返回信息流有15个美国人和15个日本人站在一个气球上,排成一个圆,从其中一个人开始报数,从1报到9,报到9的人就从气球上跳下去,下一个人又从1开始报数,如此循环下去,要求到最后15个日本人全都跳下去,请问最开始这30个人位置怎么安排????
这是一条镜像帖。来源:北邮人论坛 / soft-design / #8713同步于 2006/6/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
一道面试编程题求解[求助]
bloy
2006/6/3镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
【 在 bloy 的大作中提到: 】
: 有15个美国人和15个日本人站在一个气球上,排成一个圆,从其中一个人开始报数,从1报到9,报到9的人就从气球上跳下去,下一个人又从1开始报数,如此循环下去,要求到最后15个日本人全都跳下去,请问最开始这30个人位置怎么安排????
我只会c -_-
#include <stdio.h>
void main()
{
char man[30];
unsigned int i = 0, dead = 0, count = 0;
memset(man, 1, sizeof(man));
while(dead <= 14)
{
if(man[i] == 1 && ++count == 9)
{
man[i] = 0;
printf("[%2d] %2d\r\n", ++dead, i+1);
count = 0;
}
if(++i == 30) i = 0;
}
printf("all 15 japanese dead.\r\n");
}
[em8][em8][em8][em9]
import java.util.*;
public class Joseph {
/**
* Auth:zooloo
* 约瑟夫环
* 30个人,排成一个圆,从其中一个人开始报数,从1报到9,报到9的人就
* 从气球上跳下去,下一个人又从1开始报数,如此循环下去。最后显示跳
* 下的所有人的先后序列。
*/
public static void main(String[] args) {
LinkedList list=new LinkedList();
int count=0;
String person;
for(int i=1;i<31;i++){
list.add("person--"+i);
}
for (int i=0;i<list.size();i++){
count++;
if(count==9){
person=(String)list.get(i);
list.remove(i);
if((i==list.size())&&(list.size()>=9)){
i=0;
}
count=1;
System.out.println(person);
}
if((i==list.size()-1)&&(list.size()>=9)){
i=-1;
}
}
}
}