pat乙個人向攻略

1 每次使用數組之前一定要檢查數組是否越界,答案錯誤有可能是數組越界造成的。
2 快排看熟,多熟悉幾種排序方法,如果快排出問題馬上換掉
Sort函數,默認升序

#include <algorithm>
int main(int argc, _TCHAR* argv[])
{
int a[20]={2,4,1,23,5,76,0,43,24,65},i;
for(i=0;i<20;i++)  cout<<a[i]<<endl;
sort(a,a+20);
for(i=0;i<20;i++)   cout<<a[i]<<endl;
return 0;
}

3 搞清楚long long int long int int double的取值範圍
4 搞清楚小數點精確到幾位的輸出方式,前方補零 setw setfill(‘0’)
精確到小數點後4位,四捨五入

#include<iomanip>
cout<<fixed<<setprecision(4)<<a;

輸出4位整數,不足補零

cout<<setfill(‘0’)<<setw(4)<<a;

不要四捨五入可以轉字符串再截取
四捨五入的另一種方法是+0.5取floor

5 搞清楚數字和字符串之間轉換的方式

#include<sstream>
string a;cin>>a;
stringstream ss(a);
int b;
ss>>b;

6 如果出現超時的問題,可以把一些函數形參中比較大的變量設置成全局變量,可以縮短函數之間傳值的時間。

7 vector的size和int類型是其實是不一樣的,vector的size是不會減到負值的

8 熟悉scanf和printf的使用方式,關鍵的時候能救命,cout和cin比這兩個慢很多

#include<stdio.h>
#include <iostream>
using namespace std;
int main( )
{
   int a; float b; char c;
   scanf("%d %c %f",&a,&c,&b);  //注意在變量名前要加地址運算符&
   printf("a=%d,b=%f,c=%c\n",a,b,c);
   return 0;
}

9 熟悉創建定長vector,數組,動態數組的方法,如果碰到超時,可以考慮把id優化成數組中元素的位置,可以節省查找的時間。

10 求最大公約數要注意:不是隻反覆除以不超過兩個數開根號的質數就可以的,萬一其中一個數是質數呢?3和6?學習輾轉相除法(大數取小數的餘數,再對餘數取餘數,可以整除爲止)。

#include<iostream>
using namespace std;
int a , b , a1 , b2 , l;
int gcd(int x , int y)
{
  if(!y)
    return x;
  else 
    return gcd(y , x%y);
}
int main()
{
  std::cout << "請輸入兩個正整數,計算它們的最大公約數" << endl ;
  int a , b , ans;
  std::cin >> a >> b;
  if(a > b)
    ans = gcd(a , b);
  else 
    ans = gcd(b , a);
  cout << ans;
  return 0;
}

11 在cin後使用getline,要記得在使用getchar前接受cin後面的換行符
12 改字體:工具,選項,環境,字體和顏色

以上內容很多投機取巧的部分,純粹應試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章