pta程式設計平台 1005 繼續(3n+1)猜想(c++)
做題耗時: 4 h
此題主要學習到了:
陣列的用法,可以用陣列為資料做作標記,而不是只知道存放資料,可將其初始為很大。例如:3 4 58 24 19 將data[3],data[4],data[58],data[24],data[19]的值設為0或1,以作為其標記,初始將陣列大小可以放的很大
更方便快捷的排序方法:系統標頭檔案< algorithm >內的函式sort(start,end,cmp),效率相比氣泡排序等更高,且使用方便,具體用法如下,詳情以及更多其它用法函式sort類函式總結及用法例子:
語法:sort(start,end,cmp)
(1)start表示要排序陣列的起始位址;
(2)end表示陣列結束位址的下一位;
(3)cmp用於規定排序的方法,可不填,預設公升序,從小到大。
cmp改為降序模板 從大到小:
bool cmp(int a , int b)
時間複雜度:
時間複雜度為nlog2(n),執行效率較高。
例子:陣列a[n] sort(a,a+i,cmp)
3. 使用vector時當資料較龐大時效率可能受影響
參考博主:robert wang
**如下:
#include
#include
#include
using
namespace std;
vector<
int>
tab(
100001,0
);bool
cmp(
int a,
int b)
intmain()
}}int ans[
100]
;int count=0;
for(
int i =
0; i < n; i++)}
sort
(ans, ans + count, cmp)
;int m =1;
for(
int i =
0; i < count; i++
)else
}return0;
}```c++
1005繼續3n 1猜想
卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對n 3進行驗證的時候,我們需要計算3 5 8 4 2 1,則當我們對n 5 8 4 2進行驗證的時候,就可以直接判定卡拉茲猜...
1005 繼續 3n 1 猜想
卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對n 3進行驗證的時候,我們需要計算3 5 8 4 2 1,則當我們對n 5 8 4 2進行驗證的時候,就可以直接判定卡拉茲猜...
1005 繼續 3n 1 猜想
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。...