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<<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 改字体:工具,选项,环境,字体和颜色
以上内容很多投机取巧的部分,纯粹应试。
新闻热点
疑难解答