求一个java程序

(1)要求500个人围成一圈,从第一个开始计数,每次计数到3该人退出,从下一个开始计数,计数到3该人退出,以此类推,循环进行,当生最后一个人时,请问他的位置是多少(2)如... (1)要求500个人围成一圈,从第一个开始计数,每次计数到3该人退出,从下一个开始计数,计数到3该人退出,以此类推,循环进行,当生最后一个人时,请问他的位置是多少
(2)如果是十个人,是否能通过编程显示中间过程
要求用类的方法写出
展开
 我来答
0613032107
2013-10-06 · TA获得超过347个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:210万
展开全部
package com.test;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @作者 摘自网络
 * @创建日期 13-10-6
 * @创建时间 下午7:25
 * @版本号 V 1.0
 */
public class ThreeLeaveOut {
private static int count = 0;//定义数到的人的编号

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入人数:");
int n = scanner.nextInt();
System.out.println("请输入出局号码:");
int m = scanner.nextInt();
long s1 = System.currentTimeMillis();
sortP(n, m);
long s2 = System.currentTimeMillis();
System.out.println("所用总时间:" + (s2 - s1));
}

private static void sortP(int n, int m) {
if (n == 1) {//特殊情况
System.out.println(n);
} else {
f1(n, m);
}
}

//当人数大于1时执行此函数
private static void f1(int n, int m) {
int[] arr = new int[n];
for (int j = 0; j < n; j++) {
//循环执行n(总人数)次,排出出局羡衫次序
for (int i = 0; i < m; i++) {
count++;//每数一人count加1
measure(j, arr);//判断count是否已在数组中
if (count > n) {
count = 1;//若count大于谈派毕总人含芹数将其置1
measure(j, arr);
//继续进行判断
}
}
arr[j] = count;//将出局人序号保存至数组
}
System.out.println("出局顺序为:" + Arrays.toString(arr));
System.out.println("最后出局人为:" + arr[n - 1]);
}

private static void measure(int j, int[] arr) {
for (int s = 0; s < j; s++) {
for (int w = 0; w < j; w++) {
if (count == arr[w]) count++;
}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhaoyj163em
2013-10-06 · TA获得超过1033个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:362万
展开全部
import java.util.Scanner;

class C
{
int k;
int cal(int n)
{
int st = 0;
for(int 凯森i = 2;i<=n;i++)
{
st = (st + 3) % i;
}
return st + 1;
}
String result(int n)
{
return n + " 个人,最后活下来的人是 "+ cal(n) +" 号";
}
void process(int n)
{
int[] nxt = new int[n], pre = new int[n];
for (int i = 1;i<n;i++)
{
nxt[i - 1] = i;
pre[i] = i - 1;
}
nxt[n - 1] = 0;
pre[0] = 薯扒n - 1;
int pos = 0;
System.out.print(n + "个人依次出局的编号为:");
for (int i = 0;i<n;i++)
{
for (int cnt = 1;cnt < 3;cnt++)
{
pos = nxt[pos];
}
System.out.print((pos + 1) + " ");
nxt[pre[pos]] = nxt[pos];
pre[nxt[pos]] = 数孙昌pre[pos];
pos = nxt[pos];
}
System.out.println();
}
}

public class PetTest
{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
C c = new C();
System.out.println(c.result(500));
System.out.println(c.result(10));
c.process(500);
c.process(10);
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hdparrot
2013-10-06 · TA获得超过2404个赞
知道小有建树答主
回答量:1385
采纳率:0%
帮助的人:1149万
展开全部
你之前不是问坦念过这个问脊信好题吗?我都回答过一樱铅次了。
http://zhidao.baidu.com/question/2072969118453260548.html?oldq=1
追问
他要求用定义类的方法写出  不能用面向过程的方法
追答

这个好说,待我改动一下 字数超了,放在附件里了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式