題目:
題目詳情 - 1005 繼續(3n+1)猜想 (25 分) (pintia.cn)
這道題真的耗了好久!終於解出來啦!
首先反思一下為什麼會被卡住這麼久:
1.關於演算法:我還是用到了結構體,結構體有兩個變數:數值和bool,bool是為了表示這個數有沒有被其他數字覆蓋
每進行一次操作,這裡要注意的是不能改變這個數的數值,因為後續要輸出這個數(如果是關鍵數的話),如果像先前一樣改變了這個數值,那最後這些數都變成1了。所以我們要用乙個新的變數來代替這個數來做變換
2.語法:基礎語法太重要了!血的教訓啊!!!查bug查了好久,發現是==和=搞錯了!!!尤其是bool型別,是==true/==false
還有建立結構體動態陣列,這次比上次熟練了一點!
3.再吐槽一下自己的基本功:氣泡排序!因為第二重迴圈時迴圈變數已經是j了,所以比較時陣列的序號是j而不是i!
4.pat的格式化輸出真的很煩,第一次測試時顯示格式不對,結尾不能有空格!
上**:全通過測試了,滿分
#include usingnamespace
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進行驗證的時候,就可以直接判定卡拉茲猜...