10 2013 档案
摘要:homeword04-word search0. 摘要本次作业,要求完成一个word search的程序,具体要求是: 输入:一个包含20-60个单词的文件,各单词不大于20个字母,无空格。 输出:一个猜词游戏的字母矩阵,满足如下条件: 1. 每个单词在矩阵中出现,且只出现1次 2. 上下、下上、左右、右左及对角线共8个方向,每个方向均不少于2个单词排布。 3. 矩阵长宽可以不同 4. 不存在无效行或列 5. (进阶要求)矩阵为正方形 6. (进阶要求)矩阵四角有单词覆盖 对于这个题目的实现,在可解的基础上,最重要的是以一种相对高效的方式给出结果。为此,老师讲解了“简单粗暴”法、...
阅读全文
摘要:摘要: 在本次作业博客里,我将主要阐述作业3的收获。作业3表面是将之前的程序转换为图形界面(之前程序见http://www.cnblogs.com/shone/p/3348372.html),然而本质是:1. 熟悉模块化、重构、重写2. 体验结对编程。 作业以上一次的优秀代码为基础,我们首先敲定了/h, /v, /h /v, /a几个模块的算法,然后进行模块化,成为独立的.dll文件,最后使用PYQT写UI并调用前述dll文件,实现原始需求。博客中老师要求提到的内容,以加粗表示。上图为我们的成果,并以此作为测试通过的象征,其他功能已经通过测试,不在此赘述。1. 算法相关 算法部分:htt...
阅读全文
摘要:前面已经谈过最大一维子数组和问题,这里面扩展到二维。一. 常规情况一个矩形的数组,找到一个矩形的子数组有最大的元素和,求这个和。 1. 从朴素算法入手,枚举矩形数组的4个顶点,以此计算其数组和。同样,时间复杂度很大,我们仅以此入手逐步优化。2. 参照一维数组的思路,保存中间结果,利用动态规划优化算法。优化点就是子数组求和一处,二维数组的求和不同于一维,但是仍然能找到方法:先声明这个方法是参考《编程之美》书中的讲解的,鄙人大脑迟钝,尚无法独创:令二维数组的起点不是0,而是1,使用PS[i][j]表示以[0][0], [i][0], [0][j], [i][j]四个顶点围起来的子数组和,边界...
阅读全文