第一章 算法和算法的表示
1.1 使用计算机解决问题的一般过程
大家看到老师手上拿的一张银行卡,有一次我取钱的时候不记得密码了,于是就将常用的密码一个一个的去试,但试到第三次的时候,ATM柜员机警告不允许再试了,否则将没收磁卡,请问:“银行为什么要限制尝试密码的次数”呢?生:为了安全,以免银行卡丢失的时候,别人取走了你的钱。
请注意老师的问题,为什么要限制次数呢?
因为如果不限制次数的话,试多了,就可以试出密码来。
如果现在换作你,无论试多少次都可以,你怎么获得密码?通常我们银行卡的密码是六位数。
一个一个的去试,先是000000,然后000001,一直到999999,总有一个密码是对的。
我可不是要大家以后捡到了别人的卡都去试啊,只是讨论这种方法的可行性。刚才大家的讨论说明了,如果不限制次数,六位数的密码我们最多试一百万次,一定能够获得相应的密码,所以幸好银行限制了次数,而且也限定了每天所取的金额,这样较好的保护了我们的利益。
趣味数学题
两个大人和两个小孩一起渡河,渡口只有一条小船,一次只能渡过一个大人或两个小孩,他们四人都会划船,但都不会游泳。
同学们现在想一想,他们怎样渡过河去?请写一写你的渡河方案。
渡河的方法与步骤:
第一步:两个小孩同船渡过河去;
第二步:一个小孩划船回来;
第三步:一个大人独自划船渡过河去;
第四步:对岸的小孩划船回来;
第五步:两个小孩再同船渡过河去;
第六步:一个小孩划船回来;
第七步:余下的一个大人独自划船渡过河去;
第八步:对岸的小孩划船回来;
第九步:两个小孩再同船渡过河去。
趣味数学题
一个农夫带一条狼一头山羊和一篮白菜要过河,但是只有一条小船。乘船时,农夫只能带一样东西。当农夫在场时,着三样东西相安无事。一旦农夫不在,狼会吃羊,羊会吃蔬菜。请设计一个算法,时农夫安全地将着三洋东西安全渡河。
同学们现在想一想,他们怎样渡过河去?请写一写你的渡河方案。举例说明算法的优劣。
【方案一】
第一步:农夫带羊过河,空手回来;
第二步:农夫带蔬菜过河,带羊回来;
第三步:农夫带狼过河,空手回来;
第四步:农夫带羊过河;
第五步:达到目的,结束。
【方案二】
第一步:农夫带羊过河,空手回来;
第二步:农夫带狼过河,带羊回来;
第三步:农夫带蔬菜过河,空手回来;
第四步:农夫带蔬菜过河;
第五步:达到目的,结束。
著名数学家华罗庚“烧水泡茶” 问题
华罗庚在数学普及读物《统筹方法平话及补充》中“泡茶”的例子(见教材《信息技术基础》P67)要想泡茶喝,但当时的情况是:开水没有,水壶要洗,茶壶和茶杯要洗;火已生了,茶叶也有了,怎么办?
假设洗开水壶需要1分钟,把水烧开需要10分钟,洗茶壶、茶杯需要2分钟,拿茶叶需要1分钟,而泡茶需要1分钟。从图中可以看出,方法甲总共要12分钟(而方法乙、丙需要15分钟)。如果要缩短工时,提高效率,主要是烧开水这一环节,而不是拿茶叶这一环节;同时,洗茶壶、茶杯,拿茶叶总共需要3分钟,完全可以利用“等水开”的时间来做。
三种方法所使用的时间的比较,显然方法甲最省时间。水壶不洗不能烧开水,因而洗水壶是烧开水的先决县局条件。没开水、不取茶叶、不洗茶壶和茶杯,不能泡茶,因而这些又是泡茶的先决条件。由于烧开水需要的时间比较长,如果要提高效率,就要充分利用等“烧开水”的这段时间并进行其他工作,如洗茶杯、拿茶叶等。
方法甲和方法乙(方法丙)的区别是在什么时间洗刷茶具。
方法甲算法更高效。因为节约时间。
方法甲算法的科学性在于应用了“统筹方法”。因此,我们可以明白一个好算法必须用到科学的方法。
这个例子阐明了设计和选择合适的、优化的算法的重要性。我们自己在再设计算法的时间要注意这个问题。
人工解决问题的一般步骤
正确理解题意
寻找或设计正确的方法
利用人力或借助工具解决
使用计算机解决问题的一般过程
1、分析问题,确定要用计算机做什么?
2、寻找解决问题的途径和方法。
3、用计算机进行处理。