PAT乙級終於脫坑了,本來是去年就該完成的,一直拖著,甲級也刷了一半了,現在先把乙級放出來,說一下博主個人的看法。一直都記得一個老師對我們說的話:演演算法體現的是一個程式設計師基本的素質。博主很贊同這句話,因為演演算法體現了一個程式設計師的思維,而且學習演演算法可能是一個枯燥的過程,想提高演演算法是很難的。對比一下甲級和乙級,博主個人以為,乙級更像是在考察解決問題的能力,涉及的演演算法並多,資料結構也只有連結串列,而甲級考察的則是英文閱讀能力以及一些演演算法能力,比如拓撲排序、並查集等,同時也涉及到了圖和樹。每次PAT考試時,乙級後兩題即是甲級前兩題。在比賽中,使用c語言參考的人也不少,在這裡博主建議用c++,主要的原因是比較方便,好了,先把題庫分享出來吧,這些都是博主自己的AC程式碼。
1、在使用c++時如果超時了則用scanf和printf輸入輸出,如果還是超時就是演演算法的問題,這個時候應該審視一下自己的演演算法。
2、需要掌握C++的STL庫,比如:vector、map、string、queue、stack、algorithm。其中algorithm裡有sort函數,排序時就比較方便了。
3、掌握sprintf和sscanf函數,博主之前寫了篇簡介:關於sscanf以及sprintf函數。
4、掌握輾轉相除法求最大公約數,兩種寫法:
int gcd(int a,int b){
if(b==0) return a;
return gcd(b,a%b);
}
int gcd(int a,int b){
return !b ? a : gcd(b,a%b);
}
5、掌握hash思想,即雜湊思想,這是一個比較好用的思想。
6、如果是浮點型則用double。
7、掌握結構體知識。
8、掌握判斷素數的方法
bool isPrime(int n){
if(n==1||n==0) return false;
for(int i=2;i<=sqrt(1.0*n);i++)
if(n%i==0) return false;
return true;
}
9、瞭解貪婪演演算法
10、瞭解大整數運算:大整數操作——四則運算、進位制轉換、比較大小
…………
另外,關於字串處理的題,只能多做這類題,才能提高AC概率,見多才能識廣嘛,STL庫也要多用才會熟悉。總之其實乙級是不難的,難是因為做的題太少了,所以沉下心來,好好提升自己。當題目很複雜時,要學會分治,儘可能把問題分成幾個子問題,將其逐個求解。