date
slug
status
tags
summary
type
今天朋友圈刷到这样一个求助,是一道小学数学题
将1-9一共9个数填入下列等式中使之成立,且每个数不能重复
如果只是想想确实很难有思路,这道题的唯一解法似乎就是穷举
而如果穷举,那么就有$n!$种排列组合,也就是362880种
显然如果只是在草稿纸上这么写写是写不完的
那么就上matlab吧
废话少说,放码过来
代码解析
最核心的就是
perms()
这个函数的应用,这个函数可以列出某个向量的所有排列组合的情况比如:
输出内容是一个$n\cdot n!$的矩阵,本题中是一个9*362880的矩阵,因此这里可以存储在矩阵b中
另一个就是阶乘的函数
factorial()
,就不细说了,但是注意拼写一定要正确if判断处,用三个表达式AND连接与嵌套if效果是一样的,因为计算机在判断第一个表达式为false时会自动跳过
答案
答案是:没有答案,这道题是无解的题,完全不知道出题人是怎么想的,还是说这本身就有问题是个废题
小结
这道小学数学题成功让我浪费了中午的时间,并且让我觉得毫无成就感
更何况这只是一道小学的数学题,解法却如此复杂(不是涉及高深知识的问题,而是要用穷举法这种奇葩解法的问题,并且步数还那么多)
更何况这道题居然还是个废题
有些小学的出题人是不是应该反思反思,这么搞是不是把路带偏了,小学教育本来就是很基础的教育,却非要设置一个不可逾越的鸿沟让孩子去跨
- 作者:Steven Lynn
- 链接:https://blog.stv.lol/article/matlab-solving
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章