今天开始正式日常做机试训练(参考书:计算机考研--机试指南)记录一些问题/解决办法/知识回顾/易错点/心得之类的。
基础:
1. #include<stdio.h>
2. while(scanf("%d",&n)!=EOF) //scanf函数是有返回值的,返回被输入函数成功赋值的变量个数,此例中为1。若采用gets()方法读入字符串,可用while(gets())来判断输入是否结束 (注意gets()中不能为string类型 只能为char[]类型
3. printf("\n");
4. 复杂度:例:1s的运行时限,复杂度不能超过1千万,若算法时间复杂度为O(n2),则n不能大于3000; 32MB的内存空间,32*2^20(3千万级),int型为4个字节,即4B;一般为空间换时间。
5. using namespace std; //使用标准命名空间
排序:
1. 冒泡排序 时间复杂度O(n2) 空间复杂度O(n) 注意最大的总在最右,所以双重循环,内层循环终止条件为j<n-1-i
2. 快速排序 时间复杂度O(nlogn) C++库函数sort(起始地址,结束地址,cmp) 需要头文件algorithm 定序规则:升序排列、只利用小于运算符排序 cmp为自己定义的比较函数 返回值为bool类型 (C中为qsort())
做题细节:
1. struct结构初始化方法:1)struct E{}buf[1000]; 2)struct E{}; E buf[1000]; (再补充)
2. char[]型 有结束符'\0' 占1个空间 长度为100的字符串 需定义为char a[101];
3. ==不能用来判断字符串是否相等,只能判断单个字符;应该用strcmp(a,b)来判断 =0为相等,>0为a>b, <0为a<b;需要头文件string.h
4. 重载运算符:bool operator < (const E &b) const{} 或 bool operator < (const E&a,const E&b){} 第二个const不能随便用(在主函数外定义重载运算符用const报错:non-member function cannot have cv-qualifier)(在struct里不用const报错)(?)