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 改字體:工具,選項,環境,字體和顏色
以上內容很多投機取巧的部分,純粹應試。