试题 算法提高 找出出卖耶稣的人(Java)

问题描述

耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3…。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒请使用双向链表实现编写该程序,依次输出出局人的编号。

输入格式

输出格式

输出13行,前12行分别是按顺序出局的人的编号。第13行输出叛徒的编号。

我的思路:针对该题,每次选出出局的人的排序如图,最后剩下两人,手动输出~

在这里插入图片描述

import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {int n = 13;	//总人数int m = 3;	//每逢3出局一个人List<Integer> list = new ArrayList<>();for (int i = 1; i <= n; i++) {list.add(i);}while (list.size() > m - 1) {for (int i = 1; i <= list.size(); i++) {if (i == m) {System.out.println(list.get(i - 1));list.remove(i - 1);for (int j = 0; j < m - 1; ++j) {list.add(list.get(0));list.remove(0);}
//					for (int a : list) {
//						System.out.print(a + " ");
//					}
//					System.out.println();break;}}}System.out.println(list.get(0));System.out.println(list.get(1));}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部