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>
以上就是本文的全體內容,願望對年夜家的進修有所贊助。