【学习笔记】算法竞赛:chapter 1 程序设计入门

编程不是看会的,也不是听会的,而是练会的,所以尽量在计算机旁阅读,将书中的代码输入到计算机中进行调试,顺便做做上机练习。千万不要图快,如果没有足够的时间来实践,那么学得快,忘得也快。

经验(参加机试之前看一看,不要犯错

1、整数值用%d输出,浮点数用%lf输出

2、整数/整数=整数,浮点数/浮点数=浮点数

一般来说,只要在程序中用到了数学函数,就需要在程序最开始的地方包含头文件<cmath>,并在编译时连接数学库。

3、scanf中的占位符和变量的数据类型应一一对应,且每个变量前需要&符号。

4、在算法竞赛中,输入前不要打印提示信息。输入完毕后应立即终止程序,不要等待用户按键,因为输入输出的过程都是自动的,没有人工干预。

5、在算法竞赛中不要使用头文件conio.h,包括getch()、clrscr()等函数。

6、在算法竞赛中,每行输出均应以回车符结束,包括最后一行。除非特别说明,每行的行首不应有空格,但行末通常可以有多余空格。另外,输出的每两个数或者字符串间应以单个空格隔开。

7、尽量用const关键字声明常数。

8、赋值是动作,先计算右边的值,再赋给左边的变量,覆盖它原来的值。

9、算法竞赛是在比谁能更好地解决问题,而不是在比谁写的程序看上去更高级。

10、C语言中的逻辑运算符都是短路运算符。一旦能够确定整个表达式的值,就不再继续计算。

11、算法竞赛的目标是变成对任意输入均得到正确的结果,而不是仅对样例数据。

有时,即使通过了题目中给出的样例,程序仍然可能存在问题。

12、如果有多个并列,情况不交叉的条件需要一一处理,可以用else if语句。

13、可以用花括号把若干条语句组合成一个整体。这些语句仍然按顺序执行。

14、在难以一次性求出最后结果时,可以用变量存储“临时结果”,从而逐步更新。



对于竞赛的一点说明:

1、选手程序的执行时自动完成的,没有人工干预。不要在用户输入之前打印提示信息。

2、不要让程序“按任意键退出”。(例如:system("pause"),或者多加一个getchar())。


简单的鸡兔同笼问题:

//鸡兔同笼
#include<iostream>
using namespace std;
int main(){
	int n,m;
	cin>>n>>m;
	int y=(m-2*n)/2;
	int x=n-y;
	if(m%2==1||x<0||y<0)
		cout<<"No answer"<<endl;
	else{
		cout<<x<<" "<<y<<endl;
	}
	return 0;
} 


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