学习心得(六)
来源:互联网 发布:linux 内网 代理上网 编辑:程序博客网 时间:2024/06/08 23:59
1.gets()
不以空格作为字符串输入结束的标志,而以回车作为输入标志。
2.自动变量(auto)
函数内凡未加存储类型的变量均视为自动变量。
由于自动变量的作用域和生存期都局限于定义它的个体内(函数或复合语句内),因此不同的个体中允许使用同名的变量而不会混淆。
3.迷宫的算法
迷宫的信息用二维数组存储,例如入口(行、列号)、出口(行、列号)、可以走(元素值为1)、不可以走(元素值为0);实现过程中要用到栈。
思路:通过分析一个元素上、下、左、右元素可否走来对数组的值进行修改,最后用值2标志出从入口到出口的路径。
算法:定义结点数据类型,包括一个值,两个指针(一个指向前一结点、一个指向后一结点)。
1.当前结点指向迷宫入口并推入栈,值为2;
2.如果当前结点不是出口,依次判断当前结点的上、右、下、左格是否存在&&可走,如果可走就把当前结点的后指针指向新结点,新结点的前结点指向当前结点,移动当前结点到新结点,执行1。如果4个方向均不可走,把当前结点置为3并退栈,退到当前结点的前一结点上,循环2;
3.如果当前结点是出口,则结束;否则继续循环2。
4.扫雷的算法
雷的信息由二维数组存储,有雷的格子值为10,其余为0。
思路:若要实现x*y的扫雷,则使用(x+2)*(y+2)的二维数组。捕捉用户点击,判断9格状态。
算法:根据雷的位置,计算不是雷的格子,把0改变为0-8。数据结构,数组中存放2信息,一是值,二是标志(是否打开)。
1.初始化。二维数组内容全部置0,雷置10,标志全为未打开;纪录雷的个数bomb,已打开格数open=0;在x*y范围内,从00格开始到xy格结束,如果本格不是10,则累计周围8格中为10的元素个数,并赋值,如果是10,什么都不做;
2.在x*y范围内,捕捉用户点击,若(打开格数+雷数)<(x*y),则;
3.得到点击的格,判断此格以及周围8格是否为10,若是,则游戏结束,玩家失败,否则,打开9格;纪录打开格数+9;
4.等待下次用户点击;
5.若(打开格数+雷数)=(x*y),玩家赢。
ps:使用(x+2)*(y+2)的二维数组的原因是,在填充数据的时候,避免越界导致我们修改了不该修改的数据。
5.洗扑克的算法
前提条件:一副52张的牌,没有大小毛,不考虑花色,存在数组里,如何把牌洗得很乱?不够乱赌场会赔钱。
swap(cards[i], cards[random() % (54 - i) + i])。
- 学习心得(六)
- VC++学习心得(六)
- 嵌入式学习心得(六)
- WCF学习心得----(六)数据协定
- 我的MYSQL学习心得(六) 函数
- 我的MYSQL学习心得(六) 函数
- Struts1.2.4学习心得!(六)
- Tuxedo 学习心得 六
- 《卓有成效的管理者》——学习心得(六)
- Android学习心得(六)——位置服务
- 《More Effective C++》学习心得(六) auto_ptr的用法
- opencv学习心得(六)新版本绘制外形轮廓。
- opencv学习心得(六)新版本绘制外形轮廓
- OpenLayers3 学习心得(六)——WMS服务
- opencv学习心得六----轮廓提取
- MapXtreme 2005 学习心得 工具(六)
- 《算法导论》学习心得(六)—— 计数排序(Java)
- 《More Effective C++》学习心得(六)各种new和delete操作符
- 对MSNP9协议的简单使用示例
- 对日外包项目Review
- 自己动手写内核(环境篇)(原创)
- 自己动手写内核(第1课:引导程序)(原创)
- 深入浅出URL编码
- 学习心得(六)
- 打破常规创建拆分窗口的方法
- 自己动手写内核(第2课:保护模式)(原创)
- 事件与委托趣谈
- 参数的应用
- 键位扫描码,用event.keyCode获得
- MyEclipse 快捷键
- 中国七大顶级黑客X档案
- 自己动手写内核(第3课:辅助函数)(原创)