白书游--第一章

来源:互联网 发布:siman淘宝 编辑:程序博客网 时间:2024/05/17 06:35

今天完成了白书的第一章阅读,了解了几个比较知名的赛事
蚂蚁爬杆问题(P19)相遇反向,我把它理解为两者角色交换*(我走了你本想走的路)*,很easy的把问题理解了,这个问题很有趣。
其中抽签题(P23)的四个数分成2份,一份枚举两个数的和(并排序),剩下查找(亮点:逐步降低时间复杂度)
没什么好说的,下面是几个小知识点:
1:重定向(使用文件进行输入输出)
函数名:freopen
声明:FILE *freopen( const char *path, const char *mode, FILE *stream );
所在文件: stdio.h
参数说明:
path: 文件名,用于存储输入输出的自定义文件名。
mode: 文件打开的模式。和fopen中的模式(如r-只读, w-写)相同。
stream: 一个文件,通常使用标准流文件。
返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。(一般可以不使用它的返回值)
功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。
例子:

freopen("debug\\in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取 freopen("debug\\out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中 fclose(stdin);//关闭文件 fclose(stdout);//关闭文件

需要说明的是:
1. 在freopen(“debug\in.txt(注意这个写法)“,”r”,stdin)中,将输入文件in.txt放在文件夹debug中,文件夹debug是在VC中建立工程文件时自动生成的调试文件夹。如果改成freopen(“in.txt”,”r”,stdin),则in.txt文件将放在所建立的工程文件夹下。in.txt文件也可以放在其他的文件夹下,所在路径写正确即可。
2. 程序调试成功后,提交到oj时不要忘记把与重定向有关的语句删除。(oj是从标准输出输入)

2.时间复杂性:
初步了解了对于O(n)之类算法的阶,其中暴力解法(穷竭搜索)比较深刻,但是越白痴的算法资源占用越大。
二分查找的时间复杂度:时间复杂度无非就是while循环的次数!
总共有n个元素,渐渐跟下去就是n,n/2,n/4,….n/2^k,其中k就是循环的次数
由于你n/2^k取整后>=1即令n/2^k=1
可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示O()=O(logn)
3.scanf到达文件末尾是返回EOF(即是-1),循环条件:~scanf()等价于scanf()!=EOF。

1 0
原创粉丝点击