PAT乙級1005 繼續 3n 1 猜想

2022-09-12 21:21:33 字數 1235 閱讀 3189

題目:

題目詳情 - 1005 繼續(3n+1)猜想 (25 分) (pintia.cn)

這道題真的耗了好久!終於解出來啦!

首先反思一下為什麼會被卡住這麼久:

1.關於演算法:我還是用到了結構體,結構體有兩個變數:數值和bool,bool是為了表示這個數有沒有被其他數字覆蓋

每進行一次操作,這裡要注意的是不能改變這個數的數值,因為後續要輸出這個數(如果是關鍵數的話),如果像先前一樣改變了這個數值,那最後這些數都變成1了。所以我們要用乙個新的變數來代替這個數來做變換

2.語法:基礎語法太重要了!血的教訓啊!!!查bug查了好久,發現是==和=搞錯了!!!尤其是bool型別,是==true/==false

還有建立結構體動態陣列,這次比上次熟練了一點!

3.再吐槽一下自己的基本功:氣泡排序!因為第二重迴圈時迴圈變數已經是j了,所以比較時陣列的序號是j而不是i!

4.pat的格式化輸出真的很煩,第一次測試時顯示格式不對,結尾不能有空格!

上**:全通過測試了,滿分

#include using

namespace

std;

//構造結構體

typedef struct

number

testn;

intmain()

//氣泡排序演算法

for (i=0;i1;i++)}}

for (i=0;i//

遍歷每乙個數值}}

else

//是奇數 }}

}}

}int k=0

;

for (i=0;i)

else

k++;}}

return0;

}

寫完後也查了一下其他人的解法,有的沒有注釋我沒有看懂,有的用stack我更不懂了。。。等我再學一段時間看看有沒有更好的解法

哈哈哈哈悄悄說一句,感覺做題真的會上癮,解出來還挺有成就感的!雖然乙級不難,但是挺考驗基礎功的,這方面我有不足,繼續努力!

對了,時間複雜度:因為用的是氣泡排序,所以時間複雜度比較大,不仔細算了

刷題目標:pat乙級——甲級——劍指offer——力扣

PAT(乙級)1005 繼續 3n 1 猜想

題目 卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對n 3進行驗證的時候,我們需要計算3 5 8 4 2 1,則當我們對n 5 8 4 2進行驗證的時候,就可以直接判定卡...

PAT 乙級 1005 繼續 3n 1 猜想

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。...

PAT乙級1005 繼續 3n 1 猜想

卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對n 3進行驗證的時候,我們需要計算3 5 8 4 2 1,則當我們對n 5 8 4 2進行驗證的時候,就可以直接判定卡拉茲猜...