java3n 1_1005 繼續(3n+1)猜想(JAVA)

卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目里,情況稍微有些復雜。

當我們驗證卡拉茲猜想的時候,為了避免重復計算,可以記錄下遞推過程中遇到的每一個數。例如對?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?(

輸出格式:

每個測試用例的輸出占一行,按從大到小的順序輸出關鍵數字。數字間用 1 個空格隔開,但一行中最后一個數字后沒有空格。

輸入樣例:

6

3 5 6 7 8 11

輸出樣例:

7 6

思路:最開始就順著想,要求出所有輸入數字的猜想數;如果輸入的K個數字有數字n不在所有的猜想數內,那n就是其中一個關鍵字;

1.輸入數字歸為一個數組a[]2.求出所有猜想數,歸為一個數組b[]

3.如果輸入的數字a[i]在數組b[]中,那a[i]歸零

4.最后對a[]排序,按格式輸出答案

因為猜想數的個數是動態的,必然是有重復的;所以需要考驗數組長度,或去重,這樣能加快一些效率;(之前錯誤的思路:1.求出所有輸入數字的關鍵字(也就是第一步運算得出的數字),放入一個數組內keyNum[],

2.用輸入的數字數組inputNum[]與keyNum[]中的值比較,相等則為零3.最后輸出inputNum[]

錯誤的地方在于,inputNum[]中的元素,可能不再關鍵字keyNum[]中,而在所有的猜想數字中

)以下為笨方法,直接定義了一個長度為10000的猜想數數組;

import java.util.Scanner;

public class Main{

public static void main (String [] args){

Scanner in =new Scanner(System.in);

int num =in.nextInt();

int []testNum=new int[num];//聲明輸入數字的數組

int []result=new int[10000];//聲明猜想數字的數組

int count=0;

for(int i=0;i

{

testNum[i]=in.nextInt();

}

result=myMethod(testNum);//獲得所有猜想數字

for(int i=0;i

{

for(int j=0;j<10000;j++)

{

if(result[j]==testNum[i])

{

testNum[i]=0;

break;

}

}

}

for(int i=0;i

{

boolean tempBool=true;

for(int j=0;j

{

if(testNum[j]

{

int[]temp= {testNum[j]};

testNum[j]=testNum[j+1];

testNum[j+1]=temp[0];

tempBool=false;

}

}

if(tempBool)

{

break;

}

}

for(int i:testNum)//輸出答案

{

if(i!=0&&count==0)

{

System.out.print(i);

count++;

}

else if(i!=0&&count>0)

{

System.out.print(" "+i);

}

}

}

public static int[] myMethod(int[]testNum)//求所有猜想數字的方法

{

int[]temp=new int[10000];

int tempCount=0;

for(int i =0;i

{

int m=testNum[i];

for(int j=0;j

{

if(m%2==0)

{

temp[tempCount]=m/2;

m=m/2;

tempCount++;

}

else

{

temp[tempCount]=(3*m+1)/2;

m=(3*m+1)/2;

tempCount++;

}

}

}

return temp;

}

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287432.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287432.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287432.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【遙感物候】Matlab求解一元六次多項式,計算植被生長季始期

一元六次多項式能很好的逼近濾波后的曲線,與二次多項式相比,在擬合植被整個生長季曲線方面有更好的優勢,該方法常用來描述北方溫帶和高緯度地區時序NDVI生長季模式。因此,本文使用一元六次多項式來擬合植被整個生長季曲線,效果很好。那么擬合后,這樣解方程呢求生長季參數…

Android之給控件添加水紋波效果

1 問題 給控件添加水紋波效果&#xff0c;點擊起來像點中了&#xff0c;不然效果太粗糙了&#xff0c;沒反應。 2 實現 給控件添加如下屬性 android:background"?android:attr/selectableItemBackground"波紋有邊界 android:background"?android:attr/sele…

《看聊天記錄都學不會C語言?太菜了吧》(1)我在大佬群里問基礎問題沒人理?

若是大一學子或者是真心想學習的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋了新手…

個人博客作業_week2

1. 是否需要有代碼規范 1.這些規范都是官僚制度下產生的浪費大家的編程時間、影響人們開發效率&#xff0c;浪費時間的東西。 我不同意這個論點。 有句俗語’無規矩不成方圓‘&#xff0c;這亙古傳承的至理同樣適用于寫代碼。制定代碼撰寫規范并不是 迫于壓力完成上級的任務&am…

最全面透徹的RabbitMQ指南

概念RabbitMQ是實現了高級消息隊列協議&#xff08;AMQP&#xff09;的開源消息代理軟件&#xff08;亦稱面向消息的中間件&#xff09;。RabbitMQ服務器是用Erlang語言編寫的&#xff0c;而集群和故障轉移是構建在開放電信平臺框架上的。所有主要的編程語言均有與代理接口通訊…

TensorFlow中RNN實現的正確打開方式

上周寫的文章《完全圖解RNN、RNN變體、Seq2Seq、Attention機制》介紹了一下RNN的幾種結構&#xff0c;今天就來聊一聊如何在TensorFlow中實現這些結構&#xff0c;這篇文章的主要內容為&#xff1a; 一個完整的、循序漸進的學習TensorFlow中RNN實現的方法。這個學習路徑的曲線較…

【遙感物候】Hants NDVI時間序列諧波分析法數據重構,植被生長季曲線效果可佳(附Hants軟件下載)

NDVI時間序列諧波分析法(Harmonic Analysis of NDVI Time-Series)(簡稱Hants )對時間序列數據進行平滑。該方法是一種新的物候分析方法,可用于定量化的監測植被動態變化。其核心算法是傅里葉變換和最小二乘法擬合, 即把時間波譜數據分解成許多不同頻率的正弦曲線和余弦曲線,…

Android之在Java socket作為服務器里面返回數據頭部怎么寫入瀏覽器需要下載文件的文件名

1 問題 Android app里面寫了一個Java socket的簡單服務器,在瀏覽器里面輸入相應的IP和端口訪問服務器下載文件,Java socket怎么寫返回數據的頭部信息,瀏覽器才知道需要下載文件的名字呢? 2 關于Content-Disposition 在常規的HTTP應答中,Content-Disposition 響應頭指示回…

java中hasnext的作用_java中Scanner的hasNext()的疑問

第一個問題&#xff0c;兩段代碼的區別在于阻塞的位置不同&#xff0c;加上一行輸出代碼就可以很明顯地看到差別。Test.javaimport java.util.Scanner;public class Test {public static void main(String[] args) {Scanner s new Scanner(System.in);while(s.hasNext()){Syst…

《看聊天記錄都學不會C語言?太菜了吧》(2)我說編程很容易你們不服?

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋…

ABAP的自學之路 ,初步認識ABAP 一

由于工作的關系&#xff0c;最近需要對SAP系統進行二次開發&#xff0c;于是開始學習ABAP。鑒于網上對于ABAP的資料少之又少&#xff0c;所以自己整理一些資料。 第一章 ABAP 開發環境和總體介紹1.1 ABAP 開發環境ABAP 開發的三種環境&#xff1a;&#xff08;1&#xff09;SAP…

LCD1602,4位數據總線液晶屏時鐘,STC12C5A60S2的10位ADC功能程序

/* 程序名&#xff1a;    LCD1602&#xff0c;4位數據總線液晶屏時鐘&#xff0c;STC12C5A60S2的10位ADC功能程序 編寫時間&#xff1a;  2015年10月4日 硬件支持&#xff1a;  LCD1602液晶屏 STC12C5A60S2 外部12MHZ晶振 接線定義&#xff1a; DB7 --> P1^7DB6…

WPF|黑暗模式的錢包支付儀表盤界面設計

收集下大家的意見&#xff0c;是否需要在文中貼上源碼&#xff08;文末會給出源碼鏈接&#xff09;&#xff0c;請大家踴躍留言。閱讀目錄效果展示準備簡單說明 源碼結尾&#xff08;視頻及源碼倉庫&#xff09;1. 效果展示欣賞效果&#xff1a;2. 準備創建一個WPF工程&#x…

量子計算機的現狀和趨勢

量子計算機概述 計算機是一種新型的運算 它具有具有強大的并行處理數據的能力&#xff0c;可解決現有計算機難以運算的數學問題。因此&#xff0c;它成為世界各國戰略競爭的焦點。 量子計算機的優勢 量子計算機與現有的電子計算機以及正在研究的光計算機&#xff0c;生物計算機…

【空間數據庫】Windows操作系統PostgreSQL+PostGIS環境搭建圖文安裝教程

PostgreSQL是一種特性非常齊全的自由軟件的對象-關系型數據庫管理系統(ORDBMS),PostgreSQL支持大部分的SQL標準并且提供了很多其他現代特性,如復雜查詢、外鍵、觸發器、視圖、事務完整性、多版本并發控制等。同樣,PostgreSQL也可以用許多方法擴展,例如通過增加新的數據類…

Android之gravity=“center_vertical“和layout_gravity=“center“的效果

1、兩控件分別加上2個下面的屬性 gravity="center_vertical" android:layout_gravity="center" 代碼如下 <LinearLayoutandroid:id="@+id/ll_no_love"android:layout_width="match_parent"android:layout_height="match…

《看聊天記錄都學不會C語言?太菜了吧》(3)人艱不拆,代碼都在談戀愛?!

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋…

spark java 計數_spark程序——統計包含字符a或者b的行數

本篇分析一個spark例子程序。程序實現的功能是&#xff1a;分別統計包含字符a、b的行數。java源碼如下&#xff1a;package sparkTest;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import…

golang reflect

reflect包實現了運行時反射&#xff0c;允許程序操作任意類型的對象。典型用法是用靜態類型interface{}保存一個值&#xff0c;通過調用TypeOf獲取其動態類型信息&#xff0c;該函數返回一個Type類型值。調用ValueOf函數返回一個Value類型值&#xff0c;該值代表運行時的數據。…

DB2常用命令

查看DB2License信息 DB2基礎命令 轉載于:https://www.cnblogs.com/arcer/p/5573317.html