用java解决如下问题

aimr0215 2012-09-19 02:28:57
有10个同学手拉手围成一圈,从第一个同学开始计数。每数到3去掉一个同学,剩余同学继续围成一圈,从下一个同学开始重新计数。依此类推,直到剩下最后一个同学为止。编程确定最后一个同学的编号。要求输出结果如下图。
...全文
152 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
循环链表,没循环3个去掉一个,直到最后一个就可以了
[/Quote]
有道理
安特矮油 2012-09-19
  • 打赏
  • 举报
回复
循环链表,没循环3个去掉一个,直到最后一个就可以了
nmyangym 2012-09-19
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20120627/20/4f300b35-b616-4d3d-8a22-e5313f9fc3cb.html
a8509190 2012-09-19
  • 打赏
  • 举报
回复
循环链表 一下就就解决了。LinkList
MiceRice 2012-09-19
  • 打赏
  • 举报
回复
用循环链表来做吧,这样比较简单。
iGoodLoser 2012-09-19
  • 打赏
  • 举报
回复
这不是约瑟夫环吗

import java.util.*;

public class JOSEPH_PROBLEM{
/**
*递归法
*@param loop 每次数数循环的最大值,数到此数的元素需要退出出链表
*@param size 链表的大小,即有几个人
*@param list 每次数数时的新链表
*@param begin 每次数数开始的位置节点
*/
public static void resolve(List<Node> list,int size, int loop,Node begin){
Node temp = begin;
if(size > 1){
for(int i = 0; i < loop; i++){
begin = begin.getNext();
}
for(int i = 0; i < loop - 2; i++){
temp = temp.getNext();
}
System.out.println(temp.getNext());
list.remove(temp.getNext());
temp.setNext(begin);
resolve(list,list.size(),loop,begin);
}else{
System.out.println(list.get(0));
}

}
//测试main方法!!
public static void main(String[] args){
int count = 0;
int loop = 0;
System.out.println("请输入人数:");
Scanner input = new Scanner(System.in);
count = input.nextInt();
System.out.println("请输入循环数:");
loop = input.nextInt();
List<Node> list = Node.generator(count);
Node begin = list.get(0);
JOSEPH_PROBLEM.resolve(list, count, loop, begin);
}
}

class Node{

private Node next;
private static int data = 1;
private final int COUNT = data++;

public Node getNext(){
return next;
}
public void setNext(Node next){
this.next = next;
}
public String toString(){
return COUNT+"";//+" :"+next;
}
public static List<Node> generator(int count){
List<Node> list = new LinkedList<Node>();
Node node = new Node();
list.add(node);
for(int i = 0; i < count-1; i++){
Node next = new Node();
list.add(next);
list.get(i).setNext(next);
}
list.get(count-1).setNext(node);
return list;
}
}

很久之前写的一个算法,只是单纯的实现了,没考虑最优化问题

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧