导航菜单
首页 >  考研机试java  > 计算机考研机试攻略

计算机考研机试攻略

目录

第一章 从零开始

1.1机试分析

1.2 IDE的选择与评测结果

1.3 DreamJudge的使用

1.4输入输出技巧

1.5头文件技巧

1.6数组使用技巧

1.7审时度势 — 复杂度与是否可做

1.8 C++ STL的使用

1.9多组输入的问题

第二章 入门经典

2.1 简单模拟

2.2 进制转换类问题

2.3 排版类问题

2.4 日期类问题

2.5 字符串类问题

2.6 排序类问题

2.7 查找类问题

2.8 贪心类问题

2.9 链表类问题

第三章 数学

3.1 同模余定理

3.2 最大公约数(GCD)

3.3 最小公倍数(LCM)

3.4 斐波那契数列

3.5 素数判定

3.6 素数筛选

3.7 分解素因数

3.8 二分快速幂

3.9 常见数学公式总结

3.10 规律神器OEIS

第四章 高精度问题

4.1 Python解法

4.2 Java解法

4.3 C/C++解法

第五章 数据结构

5.1 栈的应用

5.2 哈夫曼树

5.3 二叉树

5.4 二叉排序树

5.5 hash算法

5.6 前缀树

第六章 搜索

6.1 暴力枚举

6.2 广度优先搜索(BFS)

6.3 递归及其应用

6.4 深度优先搜索(DFS)

6.5 搜索剪枝技巧

6.6终极偏分技巧

第七章 图论

7.1 理论基础

7.2 图的存储

7.3 并查集

7.4 最小生成树问题

7.5 最短路径问题

7.6 拓扑排序

7.7 打印路径类问题

第八章 动态规划

8.1 递推求解

8.2最大子段和

8.3 最长上升子序列(LIS)

8.4 最长公共子序列(LCS)

8.5 背包类问题

8.6 记忆化搜索

8.7 字符串相关的动态规划

 

 

 

第一章 从零开始

 

1.1机试分析

首先我们来看一下机试是怎样的一种考核模式

全国所有院校的机试都大同小异,大部分有自己OJ(Online Judge也就是在线代码测评平台)的学校都会采用OJ上做题的方式来进行考核。这种考核方式的好处是公开透明,机器进行判题并给分,就像N诺的DreamJudge一样。没有OJ的学校只能人工进行判题,人工判题的话,一方面是主观性比较强,可能还会对其他方面进行考量,这个就需要自己去了解了。总的来说,不论是OJ判题还是人工判题,代码都要能通过测试用例才能得到分数。

 

针对机试我们应该怎么去训练提升自己呢

首先,一定要做题,在N诺上做题,不要自己埋头看书,在不断做题的过程中才能提升自己。如果非要用一个量化的标准来衡量的话,至少要在N诺上做够100题(也就是达到砖石II以上段位),才能保证你机试达到自己满意的成绩。题量是很关键的,看懂的题再多,都不如自己实际敲代码去解决问题更稳妥。

 

解题速度也是很重要的

其实解题速度和题量是正相关的,相信题量足够的同学,解题的速度都不会太慢。机试一般2-3个小时左右,要解决5-8道题。平均下来一道题最多半个小时,从读题、分析题意、思考解法、敲代码、调试、测试数据到最后提交这整个流程下来,如果你平时训练的少,读题慢、理解题意慢、思考解法慢、敲代码慢、调试慢,这样一算下来,一道简单的题都可能要一个小时才能写出来,说不定题目还有坑点,再慢慢调试,基本上就凉了。

 

 

 

多打比赛也是很重要的

很多同学平时做的题很多,解题速度也挺快,但是一到比赛或者考试的时候就会卡题,在压力的情况下发挥失常比比皆是,所以平时就要锻炼自己的抗压能力。

N诺上除了每个周定期举办的小白赛,还特别为大家准备了考研机试冲刺八套卷。

在本书的最后,你可以看到关于考研机试冲刺八套卷的详细信息。通过这八套卷的练习,相信会让你的水平产生一个脱胎换骨的变化。

 

 

准备好模板是至关重要的

一般来说,机试都可以带书和纸质资料进入考场。所以提前把那些函数的用法和算法的模板准备好是很重要的,一方面是增加自己的信心,万一没记住还可以翻开来看一下。另外说不定考到原题或者类似的题,就可以直接秒杀了。

 

 

特别提醒:本书默认读者是会C语言的基本语法的,比如if语句、for语句等等。

 

 

 

C语言基本语法还未掌握的同学建议学习N诺的C语言快速入门课程(3天学会C语言不是梦)

 

地址:http://www.noobdream.com/Major/majorinfo/1/

 

 

 

 

 

 

1.2 IDE的选择与评测结果

建议选择CodeBlocks作为平时敲代码练习的IDE

下载地址:http://www.noobdream.com/Major/article/1/

 

常见做题结果反馈

Accepted:答案正确,恭喜你正确通过了这道题目。

Wrong Answer: 答案错误,出现这个错误的原因一般是你的程序实现或思路出现了问题,或者数据范围边界没有考虑到。

Runtime Error:运行时错误,出现这个错误的原因一般是数组越界或者递归过深导致栈溢出。

Presentation Error:输出格式错误 ,出现这个错误的原因一般是末尾多了或少了空格,多了或少了换行

Time Limit Exceeded:程序运行超时,出现这个错误的原因一般是你的算法不够优秀,导致程序运行时间过长。

Memory Limit Exceeded:运行内存超限,出现这个错误的原因一般是你的程序申请太大了空间,超过了题目规定的空间大小。

Compile Error:编译错误,这个不用说了吧,就是你的代码存在语法错误,检查一下是不是选择错误的语言提交了。

Output Limit Exceeded:输出超限,程序输出过多的内容,一般是循环出了问题导致多次输出或者是调试信息忘记删除了。

Submitting:提交中,请等待题目结果的返回,由于判题机有性能差异,所以返回结果的速度也不一样,N诺上做题一般瞬间就能出结果。

 

以上几种结果就是评判系统可能会返回的几种常见结果。若返回Accept,那么你就可以拿到该题所有分数,如果返回其他结果,则要看你报考学校的考试规则,是根据通过测试点的百分比给分还是只要不是AC就得0分。

 

 

1.3 DreamJudge的使用

DreamJudge是一个在线代码测评的平台,可以很方便的检验自身的学习情况。使用DreamJudge的方法很简单,通过百度搜索N诺或者在浏览器中输入网址www.noobdream.com进入N诺然后点击网站导航上方的DreamJudge就可以进去啦。

 

做题页面如下:

 

首先要登录我们的N诺账号,然后开始做题。如果没有账号,右上角点击注册,然后注册一个账号就可以了。

然后将代码粘贴到右边的输入框里,在上面选择使用哪种语言提交,C/C++/Java/Python,建议选择C++提交,因为C++可以编译C语言代码。我们一般写代码为了方便,都会使用一点C++的特性来帮助我们快速解决一道题目。如果代码里含有C++的特性却选择了C语言提交的话,会返回编译错误的提示信息。

 

1.4输入输出技巧

输入int型变量 scanf("%d", &x);

输入double型变量 scanf("%lf", &x); 不用float直接double

输入char类型变量 scanf("%c", &x);

输入字符串数组 scanf("%s", s);

输出与输入表示方式一致

printf("%s\n", s);

 

scanf输入解析

输入日期 2019-10-21

int year, month, day;  scanf("%d-%d-%d", &year, &month, &day);  printf("%d %d %d\n", year, month, day);  

这样可以直接解析出来

 

输入时间 18:21:30

int hour, minute, second;  scanf("%d:%d:%d", &hour, &minute, &second);  printf("%d %d %d\n", hour, minute, second);  

 

scanf和gets

输入一行字符串带空格的话,使用gets,scanf遇到空格会自动结束

char s[105];  gets(s);//例如输入how are you?  printf("%s\n", s);  

 

getchar和putchar

读入单个字符和输出单个字符,一般在scanf和gets中间使用getchar用于消除回车’\n’的影响

 

 

 

输出进制转换

int a = 10;  printf("%x\n", a);//小写十六进制输出 答案a  printf("%X\n", a);//大写十六进制输出 答案A  printf("%o\n", a);//八进制输出  答案12  

 

输出增加前置0

int a = 5;  printf("%02d\n", a);//其中2代表宽度 不足的地方用0补充  输出结果05  printf("%04d\n", a);  输出结果0005  

 

输出保留小数

double a = 3.6;  printf("%.2lf\n", a);//2表示保留两位小数  

输出结果3.60

 

有小数输出小数,没小数输出整数

%g

 

特别注意:中文符号和英文符号要对应一致,一般情况下都用英文符号(如中文逗号,和英文逗号,)

 

long long的使用

很多情况下的计算会超出int,比如求N!,N比较大的时候int就存不下了,这时候我们就要用long long。那么我们怎么去记int和long long的范围呢,有一个简单的记法,int范围-1e9到1e9,long long范围-1e18到1e18,这样就容易记了。

long long x;  scanf("%lld", &x);  printf("%lld\n", x);  

 

 

字符的ASCII码

不要硬记,直接输出来看

printf("%d\n", 'a');

输出结果97

printf("%d\n", 'A');

输出结果65

 

特别注意:如果遇到需要ASCII码的题目的时候记住char字符和int值是可以相互转化的。

 

cin 和 cout

很多时候使用C++的输入输出写起来更简单,在应对一些输入输出量不是很大的题目的时候,我们会采用cin和cout来提高我们的解题速度。

比如求两个数的和:

#include //输入输出函数的头文件    int main() {      int a, b;      cin >> a >> b;      cout 

相关推荐: