数学思维

在个人的理解中,大多数编程题都有数学的影子(离散数学中的图、树归到数据结构),还有一些题目仅用数学方法就可以解出答案。下题《最大降水量》就属于其中。

问题描述

由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。这个法术需要用到他手中的49张法术符,上面分别写着1至49这49个数字。法术一共持续7周,每天小明都要使用一张法术符,法术符不能重复使用。每周,小明施展法术产生的能量为这周7张法术符上数字的中位数。法术施展完7周后,求雨将获得成功,降雨量为7周能量的中位数。由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多少?

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

问题分析

题目言简意赅,即49个数字均分成7组,每组以其中位数为该组的值,而又以7组的中位数为最终的降雨量值。

由题可知,最后降雨量关键在‘中位数’。如图3.1所示:关键在于各天的中位数集合——红色一列以及红色列的中位数——绿色。为了使红色列的数值尽量高,将较小的数(1到21)尽量排在红色列下方;又为了使绿值尽量高,再将较小的数(22到33)排在绿值所在——星期四这列的左方。最终还剩16个数(34到49)排在斜线区域。而绿值无论是行、还是列,均是最小的数。即最终降雨量是16个数中最小的数——34。

数学思维的特点

数学思维在解决问题时,不局限于问题的结果与严密的逻辑格式,而是充满了创造性、抽象性。

创造性

我们对待编程应该用挑剔的眼光看待,“好程序不是编出来,是不断重构出来的”,因此创造力是编程的成长条件,更是一种满足与享受。可能没啥比自己写的代码成功解决问题后的快乐更让人沉醉。‘大道至简’,代码的干净也只有不断重构、创造,才能实现。

抽象性

常规的初级程序对数学的需求不是很大,更侧重于各种熟知框架基础(循环、条件)的理解与运用。

但对于算法来说,数学的抽象性对其十分重要。算法是需要从不同的的代码逻辑中抽象出解决问题的框架,也就是设计框架。设计框架是从更大的格局来看待这个问题,使问题由大变小,因此对一些复杂问题作用显著。

数学思维表现

在求1到100的偶数时,常规方法遍历求和。但如果是数学题,我们可能会用等差公式。两者并无高低之分,前者是将人们大脑中的本能运算思路具象化——通过语言表达;后者是运用普遍规律。因此前者更具有结构性、逻辑性,但后者毫无疑问更简单。

结语

上面着重论述的抽象性与创造性,并不表示否认逻辑性的重要。而是因为逻辑性对编程的重要性广为人知,没有论述必要。编程初级阶段对数学思维要求低,但随着算法等抽象事物的学习,要求必然会提高。因此若要追求更高的编程境界,树立数学思维必不可少。

谈一谈编程中的数学思维相关推荐

  1. 谈一谈|编程中的数学思维

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 数学思维: 在个人的理解中,大多数编程题都有数学的影子(离散数 ...

  2. python绘制如下图形、小三角形边长20_在编程中发现数学之美——使用Python小龟绘制多边形...

    在使用数学知识画出很酷的各种图形之前,你需要先学习Python编程语言的基础知识.本文将会带你熟悉以下编程概念:循环.变量.函数.使用小龟模块绘制图像.本文假设你已经安装了Python,如果没有,欢迎 ...

  3. 浅谈逻辑:编程中最重要的基础

    "英语不好能不能学编程?" "编程是不是对数学要求很高?" 时不时会在公众号后台收到类似的疑问,即:数学/英语是否是学编程先决条件? 我觉得这个问题有点像,身高 ...

  4. 少儿编程教育好不好---《浅谈青少儿编程教育与计算思维》

    前言 最近国家政策导向,导致很多少儿教育行业迎来了寒冬,使得不少企业都快支撑不下去了,这也是国家对于校外少儿教育行业的规范化必经之路.我们今天不讲政策和形势,谈谈我对于少儿编程教育的一些认识.毕竟也在 ...

  5. 浅谈托福阅读备考中的惯性思维

    随着越来越多的大学生,高中生,甚至是初中生选择出国留学之路,TOEFL(Test of English as a Foreign Language),中文音译为"托福",不断走入到 ...

  6. 程序设计中的数学思维函数总结(代码以C#为例)

    最近以C#为例,学习了程序设计基础,其中涉及到一些数学思维,我们可以巧妙的将这些逻辑问题转换为代码,交给计算机运算. 现将经常会使用到的基础函数做一总结,供大家分享.自己备用. 1.判断一个数是否为奇 ...

  7. 游戏编程中的数学——随机数字生成(RNG)的黑暗秘密

    大家好,你们能听到我讲话吗?这个演讲的内容是介绍RNG(随机数字生成)的一些黑暗秘密.如你在大屏幕上看到的,Squirrel已经介绍了一些RNG的基础概念.首先,我想详细讲解几点.他的演讲更偏重理论, ...

  8. 编程中的数学理论——排列数组合数

    目录 Part 1 引入 Part 2 排列数 Part 3 组合数 Part 4 总结 Part 1 引入 在一开始,我们需要了解所以方案问题求解的两个原理--加法原理&乘法原理. 加法原理 ...

  9. 作为程序员,你在编程中吃了哪些数学的亏?

    作为程序员你在编程中吃过哪些亏?(以下留言来自图灵读者亲身经历) 精彩评论 我再等一分钟 吃过最大的亏就是现在看数据分析与挖掘的书,面对各种各样的矩阵.积分.微积分等各类高数,线代的知识......头 ...

最新文章

  1. MySQL的共享锁和独占锁
  2. linux 产生0~100内的随机数
  3. linux mysql进阶_mysql进阶学习二之搭建主从
  4. MongoDB 里面日期查询的问题
  5. 《剑指offer》题目说明
  6. 银行营业网点管理系统——implt包(CityAreaDaoImpl )
  7. useState使用和原理
  8. HTML5的革新:结构之美
  9. OSPF虚链路技术原理与注意点
  10. 同步异步和阻塞3-同步阻塞
  11. 海风科技快速开发平台和构件的由来(一)
  12. 【精讲】软件工程用图的各个阶段及其应用(详细)系统流程图、数据流图、数据字典、ER图、状态转换图、层次方框图、Warnier图、IPO图、层次图、HIPO图、结构图、程序流程图、盒图等
  13. 2017年下半年梦想板
  14. 如何从华为云服务器上找回手机,华为云服务怎么样使用手机找回功能
  15. C语言-求两个数中的较大者
  16. ESP32TCP-SERVER 通信
  17. 【30天从入门到放弃】我的机器学习之路 4
  18. 产品vr全景摄影拍摄公司提升客户的体验感与满意度
  19. 函数调用雷劈数C语言,雷劈数??
  20. 7-6 最短工期 (25 分)(C++版)

热门文章

  1. 支持向量机-松弛变量与惩罚因子
  2. 代码随想录训练营day30
  3. 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v6.1版已发布
  4. 由java:local_policy.jar和US_export_policy.jar引发的“血案”
  5. JointJS动态流程图
  6. WICC · 出海嘉年华|嘉宾就位、话题揭晓,峰会 派对报名倒计时
  7. 【教学类-06-05】20220405 20以内加减法“从小到大排序题“(不重复题)(Python VS)
  8. 小学计算机课动画制作的评课稿,根据小学信息技术学科特点进行有效评课
  9. spring mvc 配置多数据源
  10. 阿里ESAM:用迁移学习解决召回中的样本偏差