求一个java程序
(1)要求500个人围成一圈,从第一个开始计数,每次计数到3该人退出,从下一个开始计数,计数到3该人退出,以此类推,循环进行,当生最后一个人时,请问他的位置是多少(2)如...
(1)要求500个人围成一圈,从第一个开始计数,每次计数到3该人退出,从下一个开始计数,计数到3该人退出,以此类推,循环进行,当生最后一个人时,请问他的位置是多少
(2)如果是十个人,是否能通过编程显示中间过程
要求用类的方法写出 展开
(2)如果是十个人,是否能通过编程显示中间过程
要求用类的方法写出 展开
3个回答
展开全部
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++;
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你之前不是问坦念过这个问脊信好题吗?我都回答过一樱铅次了。
http://zhidao.baidu.com/question/2072969118453260548.html?oldq=1
http://zhidao.baidu.com/question/2072969118453260548.html?oldq=1
追问
他要求用定义类的方法写出 不能用面向过程的方法
追答
这个好说,待我改动一下 字数超了,放在附件里了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询