1.10 双线程高效下载

题意:一个线程写磁盘,一个线程读网络,高效地实现下载。

这道题放在这里感觉有点怪怪的,因为这个东东在并行程序设计里面是比较基础的。

文章里面给了一个简单的信号量的方案,实现起来效果应该还是不错的,中规中矩。

个人习惯,关于磁盘读写的问题,可以优先考虑内存文件映射,特别是后面关于多线程下载的情况,这样我们的代码只管写内存,写磁盘的问题让操作系统考虑去吧。

1.11 NUM(1)一排石头的游戏

题意:N个石头,每个石头都有一个ID,ID从1开始连续编号到N,每个玩家每次可以取任意一块石头,或者取编号相邻的两块石头,谁最后取完谁胜利。

题目是从这样的分析得到解法的:

1)一块和两块石头,一次取完;

2)3块石头,取编号2,对方只能取一个,然后剩下一个,取完即胜;

3)4块石头取中间两个,对方只能取一个,然后剩下一个,取完即胜;

4)大于四块石头。。。总结了一个对称规律——N为奇数,取最中间的那个石头,N为偶数,取最中间两个石头,然后以这个中间位置为对称轴,然后看对手怎么取,对手无论取1个还是2个,都以对称位置取和他取的一样的,这样,先取的必胜。

这道题有点找规律的味道,考验一个人如何从少量样本中,看出通用规律的能力。

posted on 2012-10-21 22:23  罗辑  阅读(204)  评论(0编辑  收藏  举报