題目鏈結
輸入:
6
3 5 6 7 8 11
輸出:
7 6
思路:
1、用陣列arr下標來標記輸入的數字,如果這個數字是重複驗證過的 ,那麼就將其陣列的值修改為1作為記號
2、使用向量vector來表示輸入的每個值,利用向量可以定位到資料的位址i0
1234
5678
9101112
1314
1516
arr[i]00
0000
0000
0000
000v(1)
v(2)
v(3)
v(4)
v(5)
v(6)
v(1)11
0111
v(2)
pass
v(3)
1pass
0v(4)
01......
v(5)
pass
v(6)
pass
3、簡單來說最後輸出的結果就是arr中,這幾個陣列的位址可以用向量來定址,然後沒有修改為1的就是在這組資料中沒有被覆蓋的數
4、使用sort(v.begin(),v.end(),cmp)函式實現從大到小排序 cmp(int a,int b);
4、最後使用乙個標記flag來幫助讓輸出第乙個數後,每個後面的數,輸出的時候都要先輸出乙個空格。
**:
#include #include #include using namespace std;
int cmp(int a,int b)
int main();//初始化陣列
int i=0;
int n;
int flag=0;
cin>>k;
vectorv(k);//定義向量,長度是k
for(i=0;i>n;
v[i] = n;
while(n!=1)
} sort(v.begin(),v.end(),cmp);
for(i=0;i
PAT乙級1005 3n 1續 C語言
卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對 n 3 進行驗證的時候,我們需要計算 3 5 8 4 2 1,則當我們對 n 5 8 4 2 進行驗證的時候,就可以直接判...
PAT乙級 繼續 3n 1 猜想
卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對 n 3 進行驗證的時候,我們需要計算 3 5 8 4 2 1,則當我們對 n 5 8 4 2 進行驗證的時候,就可以直接判...
PAT乙級 繼續(3n 1 猜想
卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對n 3進行驗證的時候,我們需要計算3 5 8 4 2 1,則當我們對n 5 8 4 2進行驗證的時候,就可以直接判定卡拉茲猜...