我是怎么用编程思想来数数的?

作为一名理工科院校的学生,我对我校的男女比例是有充分自信的。
但今早官微的一篇推送把我吓到了…内容大致是建校71周年,有30多位同学分别代表所在的省份给学校送上祝福,附照片的那种。
于是我就发现了:
怎么有那么多小姐姐!这严重不符合我校基本校情啊!
而更奇妙的是,在看小姐姐计算男女比的过程中,我发现原来算法的思想也能用来数数~
你可能会疑惑了,计算男女比不就是先数有多少个女生,再数一共有多少人就可以了嘛?但其实,按照算法的思想,会有几种更优的数法

最直观的数法

请注意,数数的前提是:

  • 不能用工具
  • 事先不知道一共有多少人
  • 本人的脑子很笨,不能同时数两个数。也就是说,不能一边数有多少个女生,一边数有多少个人。

于是,最直观的数法是:先数一遍有多少个女生,再数一遍有多少个人
显然,这种数法遍历了两遍列表。

空间换时间

Ok,我们现在想,能不能数一遍就能把男女比算出来呢?
其实是有的!既然脑子不顶用,那么不妨看看陪伴了自己二十年的手。对!我们可以用手来帮忙。
具体做法是,脑子用来数有多少个人,手用来数有多少个女生。
这样,我们就能在一遍数数之后计算男女比了。这也是一种典型的空间换时间的做法(增加了手的空间)

更优方法

但是我还是不甘心,有没有既能一遍数完,又能节省空间的办法呢?
有!不过,现在我们需要对本身下手。
既然脑子一次只能数一个数,那不妨让这一个数包含更多的信息

我的思路是这样的: 将数定义为总人数与女生数的结合
举个例子:

  • 第一个人为男生,总人数为1,女生为0。因此记成10
  • 第二个人为女生,总人数为2,女生为1。因此记成21
  • 第十个人为男生,总人数为10,女生为6。因此继承106

因此,数完之后,左边的数为总人数,右边的数为女生数。这样,时间和空间都达到了较优。

总结

写这篇博客的目的,其实就是记录一下生活中的灵光,供大家一乐。
但我还是相信,计算机是一门让人聪明的学科,我们学到的知识不仅让我们能混一口饭吃,也能在生活中得以运用~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值