【JAVA】數三退一問題的解決
數三退一:
500個小孩手拉手圍成一圈,從第一個小孩開始數數,按照1、2、3、1、2、3迴圈不斷的數,數到3的小孩退出圈,其他小孩接著數,直到剩下一個小孩,問這個小孩的排在什麼位置?
思路分析:可以定義一個布林型的陣列,用來存放500個小孩,若為true,代表在圈內,若為false,則代表出圈。首先,每個小孩都在圈內(即陣列中的元素都賦值為true),從第一個小孩開始數,首先判斷其是否在圈內,若在,繼續數(countNum自加1),若不在,忽略掉他的存在,從下個小孩接著數,當數到3時,這個小孩定義為false,剩餘小孩的的數目自減1,知道剩一個小孩。
問題解決:
public class Count3Quit {
public static void main(String[] args) {
boolean[] arr = new boolean[500]; //布林型陣列,true表示還在,false表示退出。
for(int i=0; i<arr.length; i++) {
arr[i] = true;
}
int leftCount = arr.length; // 剩下的人數,初值為500
int countNum = 0; // 幾個人一輪
int index = 0; //數到第幾個人
while(leftCount > 1) { //只要剩餘人數大於1,就繼續數
if(arr[index] == true) { // 若數到第index個人,此人沒有退出,就繼續數
countNum++;
if(countNum ==3) { //數到3,此小孩出圈
countNum = 0;
arr[index] = false;
leftCount --;
}
}
index ++;
if(index == arr.length) {
index = 0;
}
}
for(int i=0; i<arr.length; i++) {
if(arr[i] == true) {
System.out.println(i);
}
}
}
}
相關推薦
【JAVA】數三退一問題的解決
數三退一: 500個小孩手拉手圍成一圈,從第一個小孩開始數數,按照1、2、3、1、2、3迴圈不斷的數,數到3的小孩退出圈,其他小孩接著數,直到剩下一個小孩,問這個小孩的排在什麼位置? 思路分析:可以定
【JAVA】逢三退一的第二種思路(面向物件)
提供第二種思路: 題目:500個小孩手拉手圍成一圈,每個小孩有一編號,數數,當數到第三個時,將該小孩刪除,求最後剩下的那個小孩是這500個小孩中的第幾個。 面向物件程式設計,首先分析,有多少個物件? 兩個。 1.小孩 成員特點: a.需要有編號 b.圓圈,需要有左孩子,l
數三退一問題 java
public class Count3Quit { public static void main (String[] args) { boolean [] arr = new boolea
數三退一 二種方式的演算法 Java
數三退一,就是指很多個小朋友圍成一個圈,從第一個開始數1.2.3. 第三個小朋友就退出 這個圈,以此類推。第一種方法,以面向過程的方式,此程式的案例十500個小朋友,public class Count3Quit {public static void main(String
【Java】數組使用
++ new div pac pri clas sta [] pub package aaa; public class aaa { public static void main(String args[]) {
【java】數據類型
相互 需要 long 3.2 方式 強制 boolean als src 邏輯型boolean: boolean類型數據只能取值True或False,不可以0或者非0替代True或False,這點與c語言不同。 字符型char: 一個char類型的字符占兩個字節。表示方式
【Java】數組知識回顧
arraycopy h+ sta 指定位置 rcp pri pre 元素 argument package another; import java.util.Arrays; import java.util.List; /** * 數組知識回顧 * @autho
【Java】JSOUP請求JSON 及解決jsoup不能完整獲取響應內容的問題
用JSOUP來請求介面,構造請求頭的時候非常方便。程式碼如下: Document doc = Jsoup .connect(Constant.DATA_URL) .timeout(10000).get(); Element body = doc.body(); JSONObject js
【java】簡單的傳送一段資料到串列埠
可以跟著一起操作。 2 給專案新增外部jar(有eclipse和intellij兩種IDE操作方式說明) 2.1 假設你用eclipse 2.2 使用intellij 3 新增dll 將dll檔案複製到jdk和jre的b
【Java】廣州三本秋招經歷
前言 只有光頭才能變強 離上次發文章已經快兩個月時間了,最近一直忙著秋招的事。今天是2018年10月22日,對於網際網路行業來說,秋招就基本結束了。我這邊的流程也走完了(不再筆試/面試了),所以來寫寫我的秋招經歷吧~ 這次的秋招可謂收穫很多: 成功收到了4399、唯品會等幾十家公司的感謝信,成功加入人才
【Java】MD5工具類,解決中文轉MD5不一致問題。
import java.security.MessageDigest; public class MD5Util { /** * * @Title: MD5 *
【Java】字串三種空字串null、new String()、""的區別
今天寫個DEMO的時候碰到了個小麻煩,有關於題目所說的字串這三者的區別,我覺得我真的是夠了,居然會用得這麼細,不過會了也好,碰到相關的問題就可以一言不合程式碼就開寫! 既然研究,那就從結果說起,來看測試程式碼和輸出結果: // 測
數三退一問題---php
<?php class kid { public $left; public $right; public $id; function __construct($f) { $this->id=$f; } }
【Java】(三)運算子小結(比較、邏輯、三元運算子)
前面介紹的兩種運算子都比較簡單,下面我們來看一下比較複雜一點的三種運算子:比較運算子、邏輯運算子、三元運算子。 一、比較運算子 又叫關係運算符,用於判斷兩個被運算元的
寫著玩兒:數三退一
/** *500個小孩兒,每次數三個人,第三個人離開。 *最後剩下的是第幾個小孩兒 *數三退一 */ public class Count3Quit { public static void mai
【java】逢3退1小練習
public class Count3Quit { public static void main (String[] args){ boolean [] arr = new boolean[500]; int len = arr.length;
五百個小孩,數三退一,最後留下的是多少號
/** * 數三退一 * @author Lei * @version 建立時間:2009-8-17 上午11:13:18 */public class Count3Quit { public static void main(String[] args) { KidCir
【java】數啤酒程序
ott round bottle 圖片 args ring around 分享圖片 system public class BeerSong{ public static void main(String[] args){ int beerNum = 99; S
【Java】入門基礎(一)
Java的歷史1995年,Oak語言更名為Java,Sun公司在Sun world會議上正式釋出Java和HotJava瀏覽器。1996年,Sun公司釋出了Java的第一個開發工具包(JDK 1.0)
【Java】【演算法練習】輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。
題目描述: 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列 {3,32,321},則打印出這三個數字能排成的最小數字為321323。 解題思路: 解題思路: 比較兩個字串s1 S2的