学习心得(六)
2008-01-18 16:46
197 查看
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])。
不以空格作为字符串输入结束的标志,而以回车作为输入标志。
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])。
相关文章推荐
- dubbo分布式框架—学习心得笔记1
- 大话设计模式学习心得1
- 本周学习心得
- 《CLR Via C#》 学习心得之三 基元类型、引用类型和值类型
- 3.2学习心得
- 【C++学习心得】第一部分:基本语言
- 学习心得
- J2ME Polish学习心得(一)----Device Optimization
- 《剑指offer》学习心得第三日
- CSS2+DIV的学习心得
- 黑马程序员_自学一年半的学习心得
- Vue学习心得(1)vue的安装
- 嵌入式每日学习心得2017.07.14
- ML学习心得(2)----Linear Regression 和Regularization
- git学习心得3
- 学习线段树的一点心得
- 干货教程 | APICloud新手学习心得分享
- java第一天学习心得和感受
- 小程序学习心得之数据绑定技巧
- 第二届全国强网杯Web 题three hit学习心得(伪write up)