书名:算法竞赛-入门经典 第2版
作者:刘汝佳
类别:读书笔记
第3章 数组和字符串
3.1 数组
Learning Points:
语法相关:
memcpy( a, b, sizeof(a));
需要 string.h- 相同的赋值可以合并。
竞赛相关
- 数组稍微声明大一些,尤其是在 size 不明确的情况下。
- 要求输出的行首和行尾均无空格。(这也太严格了一点吧)
- 而且实现这一点有很多方法:采取哪一个方法在于你是否知道行首和行尾是哪一个。如果不明白是什么意思,注意观察程序3-2和2-1采用了不一样的空格处理方式。
- 大数组在 main 外面声明。(这是为啥呢?)
3.2 字符串
Learning Points:
语法相关:
scanf("%s", s)
注意s前面没有 &,因为s已经是pointer了。sprintf
输出到某个字符串。(printf
,fprintf
注意比较这三个)strchr
在字符串中查找单个字符。
竞赛相关:
- 判断和输出,先考虑输出。
3.3 竞赛题目选讲
Learning Points:
语法相关:
- 读取单个字符:
fgetc(fin)
getchar()
- 赋值表达式也有返回值,既所赋予的值。
*猜数字游戏的提示 Master-Mind Hints, UVa340
这里的题目感觉表述不清。“有多少个数字在两个序列都出现过但是位置不对(B)” 想表达的实际意思是:“有多少个数字放错了位置?” 或者 “在当前序列中,有几个数字可以通过仅仅交换位置就可以得到新的一个正确的放对位置的数字。”
竞赛相关:
- 注意不同操作系统的回车符不一样。