程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java ArrayDeque應用辦法詳解

Java ArrayDeque應用辦法詳解

編輯:關於JAVA

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> 

以上就是本文的全體內容,願望對年夜家的進修有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved