求高手帮忙写个java程序。高手请进......急啊!!! 5

题目:假如有50个人列队站成一列。然后第一个人开始报数。依次为1,2,3,4......50。然后报数为3的倍数的人出列。剩下的人重新从1,2,3.....报数,报数为3... 题目:假如有50个人列队站成一列。然后第一个人开始报数。依次为1,2,3,4......50。然后报数为3的倍数的人出列。剩下的人重新从1,2,3.....报数,报数为3的倍数的人出列。剩下的人重新报数。依次类推。问题:用java实现最后一个出列的人是原来50人中的第几个人(即第一次报数的数字) 展开
 我来答
疑惑大解密
2011-03-27
知道答主
回答量:26
采纳率:0%
帮助的人:18万
展开全部
我日 最讨厌算法题.......看的我蛋疼...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
朱可星
2011-03-27 · TA获得超过913个赞
知道小有建树答主
回答量:1860
采纳率:91%
帮助的人:334万
展开全部
for(int i=1;i<50;i++){
int s=2;
if(i==3)
s++;
}
return s;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风籽ewffe
2011-03-27 · TA获得超过249个赞
知道答主
回答量:45
采纳率:0%
帮助的人:47.6万
展开全部
package test;

public class testMain {

/**
* @param args
* @other
* @author Kevin
*/
private static int[] tempArr = new int[50];

public static void main(String[] args) {
count(tempArr);
}

private static void count(int[] arr) {
int k = 0;
int j = 0;
for (int i = 0; i < tempArr.length; i++) {
if (tempArr[i] == 0) {
k++;
if (k % 3 == 0) {
tempArr[i] = 1;
j = i;
}
}
}
int result = 0;
for (int i = 0; i < tempArr.length; i++) {
if (tempArr[i] == 0) {
result++;
}
}
if (result > 2) {
count(tempArr);
} else {
System.out.println("最后一个退出的是第" + j + "个人。");
}
}

最后输出的J要+1, 忘了。。。
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
evildracula
2011-03-27 · 超过17用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:42.7万
展开全部
int[] a = {1,2,3...50};
public static void kill(a) {
int non-zeor-index = a.non-zeor;//找到第一个非0
int count = 0;
for (int i = non-zeor-index; i < a.lenght;i++) {
if (a[i] == 0){}; // 如果是0,下一个
else {
if( count % 3 == 0) {a[i] = 0; count = 0;}//如果第三个,抹去
else {count++;}//否则继续往后
}
}
kill (a);
}

当然这是最慢的方法,可以考虑直接继续按结果
对于一般的,有个给你参考,2个一杀的情况有
j(1)=1;
j(2n) = 2j(n)-1; n为偶数
j(2n+1) = 2j(n) + 1; n为奇数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式