Java ArrayDeque應用辦法詳解。本站提示廣大學習愛好者:(Java ArrayDeque應用辦法詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是Java ArrayDeque應用辦法詳解正文
標題請求為:
卡拉茲(Callatz)料想:
對任何一個天然數n,假如它是偶數,那末把它砍失落一半;假如它是奇數,那末把(3n+1)砍失落一半。如許一向重復砍下去,最初必定在某一步獲得n=1。當我們驗證卡拉茲料想的時刻,為了不反復盤算,可以記載下遞推進程中碰到的每個數。例如對n=3停止驗證的時刻,我們須要盤算3、5、8、4、2、1,則當我們對n=5、8、4、2停止驗證的時刻,便可以直接剖斷卡拉茲料想的真偽,而不須要反復盤算,由於這4個數曾經在驗證3的時刻碰到過了,我們稱5、8、4、2是被3“籠罩”的數。我們稱一個數列中的某個數n為“症結數”,假如n不克不及被數列中的其他數字所籠罩。
如今給定一系列待驗證的數字,我們只須要驗證個中的幾個症結數,便可以不用再反復驗證余下的數字。你的義務就是找出這些症結數字,並按從年夜到小的次序輸入它們。
輸出格局:每一個測試輸出包括1個測試用例,第1行給出一個正整數K(<100),第2行給出K個互不雷同的待驗證的正整數n(1<n<=100)的值,數字間用空格離隔。
輸入格局:每一個測試用例的輸入占一行,按從年夜到小的次序輸入症結數字。數字間用1個空格離隔,但一行中最初一個數字後沒有空格。
輸出樣例:
6
3 5 6 7 8 11
輸入樣例:
7 6
代碼以下:
<span > import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Deque; import java.util.List; import java.util.Queue; import java.util.Scanner; import java.util.SortedSet; import java.util.TreeSet; public class PAT1005 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); int numSize=scanner.nextInt(); ArrayDeque<Integer> newArrayDeque=new ArrayDeque<Integer>(); ArrayDeque<Integer> closeArrayDeque=new ArrayDeque<Integer>(); int i; while (scanner.hasNext()) { //讀取鍵盤輸出值 for (i = 0; i < numSize; i++) { newArrayDeque.add(scanner.nextInt()); } if (i>=numSize) { break; } } int temp; for (Integer integer : newArrayDeque) { //將非症結數存入closeArrayDeque中 temp=integer; while (temp!=1) { if (temp%2==0) { temp=temp/2; if (newArrayDeque.contains(temp)) { closeArrayDeque.add(temp); } }else { temp=(temp*3+1)/2; if (newArrayDeque.contains(temp)) { closeArrayDeque.add(temp); } } } } SortedSet<Integer> sortedSet=new TreeSet<Integer>(); //sortedSet用於寄存症結數 for (Integer integer : newArrayDeque) { if (!closeArrayDeque.contains(integer)) { sortedSet.add(integer); } } int[] leftInt=new int[sortedSet.size()]; int j=sortedSet.size()-1; for (Integer integer : sortedSet) { leftInt[j]=integer; j--; } for (int j2 = 0; j2 < leftInt.length; j2++) { //依照從年夜到小的次序輸入症結數 if (j2==leftInt.length-1) { System.out.println(leftInt[j2]); }else { System.out.print(leftInt[j2]+" "); } } } } </span>
以上就是本文的全體內容,願望對年夜家的進修有所贊助。