自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

可雷曼土的日志

思考自然,传播快乐

  • 博客(144)
  • 资源 (1)
  • 收藏
  • 关注

原创 2021年新版-编程基础训练32题-附提示和答案

2021年新版-编程基础训练32题-附提示和答案1. 用级数法求圆周率题目圆周率十分重要,不仅仅是在数学理论上,即便在千年前的古代,工程上的需求,也迫切需要我们知道圆周率的尽量精确的数值。求圆周率,有很多种方法,级数法就是简便易行的方法之一。很多大牛已经把级数公式写好,并证明清楚,我们只要按公式求值就好了。暂举几例:π26=112+122+132+... \frac{\pi^2}{6} = \frac{1}{1^2} + \frac{1}{2^2} + \frac{1}{3^2} + ...

2021-10-07 09:51:35 383

原创 如何防止耳机打结?

听完歌,耳机要收起来,放包包我们一般就是绕圈圈缠绕,这种做法埋下了隐患。。。。。它是最终导致纠缠乃至打结的罪魁祸首除了耳机,还有电脑的电源线网线,鼠标线usb充电线,等等。。。。你只需要一点点技巧,就可以避免 90% 的打结,原理我们缠绕耳机线时,“公转”的同时,耳机的线也在“自转”这好比弹簧被扭曲,储存着势能。。。一个系统,总是有势能减小的趋势。。。本质上,这是熵增原理的内在要求我们应当设法让耳机线处于平直,不要扭转。。。解法如果能正转一圈,再反转一圈,再正转一圈,。

2021-10-02 17:22:58 762

原创 经典编程问题(13)汉诺塔

背景汉诺塔,又称河内塔(hanoi),源于印度古老的传说。该传说中要求在三个柱子间移动金质的圆盘,规则是:每次只能移动一个盘子大盘子不能放在小盘子的上方开始的时候,在某根柱子上有 n 个盘子,另两柱空着题目三根柱子编号 0, 1, 2在 0 号柱子上有 n 个盘子,可以用 list 表示 [5, 4, 3, 2, 1]数字的大小表示盘子的大小,List 尾为柱子的上端今,要把 0 号柱的所有盘子最终移动到 2 号柱请打印出移动的过程,以及过程中每个柱子的状态。分析题目看着好像挺

2021-09-28 15:50:51 324

原创 介绍一门很有前景的语言Nim(3)

函数函数的定义与 python 相仿不过,需要对参数、返回值的类型进行说明proc get_max(x: int, y: int): int = if x > y: return x else: return yecho get_max(10,18)这里的传入参数 a, b 是按值传递的,也就是说修改它们的值,不会影响到主调方,这点与python一样与 python 不同的是,这里的 x 与 y 根本不允许你在函数中修改,那会编译不

2021-09-18 16:05:31 284

原创 经典的编程问题(23)走迷宫--真人的解法

问题迷宫A是入口B是出口#是墙.是通路比如如下的迷宫:A##############.######.....###.######.###...#........###.####.##.###########.##.####....###.##.####.##.###.##.####.##.###.##......##.###.##########.###.....####...############....B分析经典的迷宫解法是 深度优先遍历(dfs)广度优先遍历

2021-09-17 21:02:28 194

原创 介绍一门很有前景的语言Nim(2)

基本的控制结构Nim 是命令式的语言,也支持函数风格,也支持类和对象。基本的控制结构还是老样子for while if else …基本上和 python 差不多不过,增添了 case 语句var x = 76case xof 1..10: echo "small"of 99,100: echo "big"else: echo "normal"用 if elif 等也能完成,可以能是 python 不用case的原因吧基本的循环次数控制,不用 python

2021-09-17 18:04:14 367

原创 介绍一门很有前景的语言Nim(1)

产生背景python 语言如日中天。python 可以说把动态语言的优势发挥到了极致。不过,python 也有不顺手的地方。一开始,Nim 的产生主要就是为了解决 python 的两个痛点:执行效率问题,虽然可以把需要执行效率的部分换为 C 语言重写,但仍不尽如人意。没有类型的约束。这在大规模开发时,如果缺乏有效的管理和制度,将会引发混乱甚至是灾难。Nim 的特点nim 在很多地方与 python 很像但,nim 是静态类型的。也就是存在编译过程,代码中的对象存在类型约束。nim

2021-09-16 18:04:41 3426 2

原创 编程经典问题(22)组合问题

题目给定一个串 s比如:‘AAABBCBBCFE’从中一次性取 n 个字母有多少种不同的取法当 n = 3 时显然,AAA, AAB, ABB, ABC, BCE 等都是可能的方案分析假设所有的取法都已经列出在纸上。试着对这些取法进行某种分类数学上称为:等价类划分比如,可以按照含不含有字母 A 划分为两类而含有A的,又可以按照含有多少个字母A,分为多类如果被分类后的那些子问题都已经求出,当然本问题的解也就获得了。代码# 组合问题'''给定一个串 s ,比如 'AAAAB

2021-09-16 16:02:58 198

原创 经典问题17-韩信走马分油问题

问题等价于,国外的《泊松分酒》问题抽象为一般的问题:有容器容量: [L1, L2, L3, … ]已知目前的状态,即,现在容器中的油量 [Q1, Q2, Q3, …]以及,目标油量 G求操作过程分析初始状态为 S0从它一步能变成的状态为:S11, S12, S13 …这些状态如何获得?把 i 容器倒入到 j 容器,倒空或倒满为止。组合所有情况即可。。。。然后,从已知的这些状态再出发生成出更多的状态。。。。当然,如果新状态已经在历史状态中了,就舍弃一直重复,直到没有新状态

2021-09-15 15:54:08 1549

原创 经典问题(21)整数的拆分

题目给定一个正整数 n,有多少方法拆分为多个正整数的和n = 65 + 1, 4 + 2, 3 + 34 + 1 + 1, 3 + 2 + 11 + 1 + 1 + 1 + 1 + 1等都是合适的拆分因为加法的交换律,不同次序的拆分算同一种。比如:3 + 2 + 1 与 2 + 1 + 3 是同一种题目的要求是,根据 n,列出所有的拆分形式。解法一对一个大问题可以划分为多个子问题每个子问题解决了把结果收集整理即是大问题的解我们把所有的拆分按如下划分为等价类1 + …2 +

2021-09-14 09:05:42 585

原创 经典问题18-无偏博弈问题

问题透明的盒子中放 n 个球甲乙双方轮流从盒子中取球每次只能取【1, 3, 7, 8】中的某一数字个数的球。设法取到最后一个球的一方判为胜方。假设甲乙双方都十分聪明,总是使用最有利于己方的取球法。已知球数 n求先取球的一方是否有必胜的取法。分析这种游戏的局面对双方是一样的(换句话说,球本身对双方并没有不同的含义,这与象棋不同,象棋的棋子对双方意义不同。红方的猛将在黑方看来是障碍或者威胁)此为无偏博弈游戏。解决这种问题的思路其实很简单:def f(局面 x ): for 当前局面下

2021-09-13 17:00:45 200

原创 经典问题19-上台阶问题

题目有 n 级台阶每步只允许迈上 1 级或 2 级要求刚好用偶数步上完 n 级台阶求有多少种走法比如,当 n = 5时,只能 4 步(2步无法)2,1,1,11,2,1,11,1,2,11,1,1,2所以,一共有 4 种上台阶的方案。解法1把走两步看成是一个动作的整体。这样,完成这个动作后,剩余的台阶仍然要求偶数步上完。剩余的问题与本问题获得相似性 这是使用递归的关键。def f(n):当 n 很小时,返回结果对当前的局面,连走两步有哪些走法?for 所有走法:令,

2021-09-13 09:08:39 1407

原创 经典问题(20)天平与砝码问题

题目如果有砝码序列【1, 3, 9, 27, 81, 243, 729 】我们至少可以称量1000以内的所有整数重量比如: 5 = 9 - 3 - 1 即:9 放入对侧盘,3,1 放入同侧盘再比如: 19 = 27 - 9 + 1编程的目标是:给定一个重量,求:天平称重时,砝码的放置方案。解法一只有 7 个砝码,每个砝码有三种放置方法:放左边,放右边,不放。因而,总的可能组合方案数为 3 的 7 次方种。我们只有逐一枚举所有的可能方案,再筛选符合要求的就可以了。这是典型的暴力破解

2021-09-10 10:39:59 2319

原创 介绍一个超级的计算器--J语言(1)

J语言与APLJ语言和Java没啥关系,风格也迥然不同。J语言是从APL语言发展而来。APL语言由Ken E. Iverson教授发明出来,是很老的语言了。没有十分的流行,可能是因为它的编程需要使用一些特殊的“象形符号”,而不是现在大多语言采用的ASCII字符。APL语言更像是用数字符号来描述问题,其特点是代码极为精简。甚至到丧心病狂的程度。用普通语言几十行,甚至上百行的程序,它可能一行就搞定了。这当然也带来一个问题。就是可读性就降低了,你可能对着程序看了半天才明白其用意。这也是它没有大流行的原因

2021-08-31 20:23:08 727

原创 趣味编程闯关游戏介绍

趣味编程闯关游戏介绍游戏入口:编程闯关这个最土的小游戏主要是进行算法入门训练的。学习算法不可能一蹴而就。一般都是个循环往复的过程。有点感觉,然后遇到挫折,百思不解,直到想放弃。不甘心,从头再来。。更多的收获,更深的认识…再遇拦路虎。。。。。。终于有一天,曾经的崇山峻岭,回首皆为土磊沙丘。。。但更辽阔的天地才刚刚看到边界。。。。这个游戏是为算法I级(入门级)预备的。一共只有五关。大体剧透一下:太空罚款没什么难度,属于热身类型会基本的选择,循环,就能完成。但也有坑:

2021-07-12 10:25:02 1215

原创 刷力扣,学算法(2)

题外真正学会编程,只能通过实践。需要有一个外在的标准(而不是自我的感觉),来检验思路及编码的可行性。在线OJ是很好的客观检验手段。对初学者而言,刷题不在多,不在难,而在于对每道题多思考,多设计不同思路。一般而言,python语言并适合写出最高效的算法。但它的简单易读,很适合向初学者介绍算法的思想。题目【leetcode题库,第1982题】给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例 1:输入: s1 = “abc”,

2021-05-19 21:10:05 109

原创 最大公共子序列LCS

实用意义面对经典算法,经常有同志质疑:为什么要研究这个问题,是不是吃得太饱?这里说一下最大公共子序列问题的实际意义:两个场景:某个上万人参加的在线OJ考试,为了避免抄袭,需要用机器断定出任意两个提交的相似度。我们假设作弊者没有充分的时间和能力,只能多次对原稿进行如下两个操作之一:a添加一行,b删除一行。两段基因序列,可能同源,在复制过程中,可能会丢失了某些位置的碱基对,也可能会把某些碱基对复制错。我们想知道两个序列同源的可能性多大。示例我们以字符串代表序列,不影响问题的本质。那么,最大公

2021-04-25 13:55:15 557

原创 为什么python打开文件时有文本和二进制的说法

文件的扩展名尤其是windows环境下,常有误解:文件名决定了它的类型。其实文件名与人的名字一样,叫张富贵不一定是有钱人。扩展名为 txt 的也可能本来是一幅图片(我一哥们常把他的电影文件改扩展名为txt)。当然,扩展名是大家暗暗约定的风俗,最好要入乡随俗。文件内容有文本和二进制之分?这个也不十分了然。文件在存储上,就是一些1011010010…的信息,怎么好说是什么类型呢?比如,你把一个mp3文件删去一半,再后边粘上一首古诗上去,机器也不至于爆炸吧?这个文件又算哪种类型呢?类型只是一种观点

2021-04-22 19:52:43 517

原创 SCALA杂记

Java的最大优势?____java 的最大优势是什么呢?当然,铺天盖地的源码,各种已经开发好的类库、工具、框架是她的优势。但若说最大优势,莫过于JVM的流行度。____同样的思路,微软的.Net运行时也是个虚拟机,其流行度就弱得多,除了windows系统上大部分安装,苹果,Unix上很少使用。Erlang的虚拟机从种意义上讲还要先进,但普及度实在太差了。____如果要开发跨网络的应用,首选JVM,开发语言可以用Java,也可以用其它的。groovy, clojure, scala,kotlin等。

2021-03-13 18:34:50 126

原创 golang 备忘

golang gin框架安装关注golang很长时间了。即然敢说是21世纪的c语言,定有些功力的。google主导,我很犹豫。google公司聚集了大量的天才,但国家的行政命令goolgle也不敢不从。如果我国政府抵制的话,前景就渺茫了。golang 的设计我真的很喜欢。它确实是源于工程实践的。很多的想法出奇简单,却是直击工程痛点的。不支持tuple 类型,仅支持平行赋值和多值返回。这很管用。c中为多值返回自定义一个struct,太繁琐了!不支持try … finally,却仅用defer

2021-02-02 14:55:32 101 1

原创 python3题解(56 控制台输出月历)

在控制台输出月历【问题】已知年,月,在控制台输出该月的月历,比如1900年1月的月历:Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 分析:问题的关键是需要知道那个月的第一天是星期几。既然已经...

2019-12-20 13:03:25 197

原创 python3 题解(55 最长公共子串)

最长公共子串【问题】已知两个串a,b,求它们的最大公共子串的长度。最笨的办法是找到所有的公共子串,再来它们中最长的。这个复杂度太高,串稍微长一点,就特别慢了。请设计更好的算法。分析:如果把 a 串中字符为模坐标,b 串中的字符为纵坐标,求对应位置字符是否相同,相同则为 1, 不同为 0。所谓公共子串长度,就是左上到右下斜线方向的连续 1 的个数。为了避免再去统计这个数字,可以在相同时把左...

2019-12-16 12:16:51 351

原创 python3 题解(54 三阶幻方)

三阶幻方【问题】用1~N2N^2N2的数字填充一个方阵。如果每行,每列,以及两条对角线上的数字之和相等,称此方阵为幻方。用 1~9 填充 3 行 3 列的方阵,可以得出多少个幻方?如果,把旋转,镜像后的方阵看作同一个方阵,可以得出多少个幻方。分析:对所有可能的情况产生全排列。再筛选每一种情况即可。因为3阶方阵规模很小,没有必要用一个二维数组表示,直接用一维就可以。# 三阶幻方问题#...

2019-12-09 19:51:16 1739

原创 python3 题解(53 车队入栈问题)

车队入栈问题【题目】编号为 1,2…n 的一个车队,从右向左行驶。道路只能容一辆车通过,无法超车。中间有个死胡同,作为检查站。所有经过车辆必需入站检查。也可能进行很复杂检查,也可能不检查,入站后,马上出站继续上左边的路行驶。检查站容量很大,且也是单车道。求这n辆车最后在左边道路上的排列有多少种可能。分析:如果是 1 辆车,当然只 1 种可能。2 辆车则 2 种。现在考虑 3 辆车的情...

2019-12-02 20:03:00 254

原创 python3 题解(52 最原始的加密解密)

原始加密解密【问题】据传说,最原始的加密解密是使用在罗马军队传递情报的环节中。其原理只是把明文的字母向后移动 k 个位置。比如k=2时,a变成c,b变成d,y则变为a,z变为b。请据此规则编写加密、解密的程序。我们不妨假定只对小写字母加密,其它的符号保持不变。分析:加密的过程向后移动,遇到z后,再循环回a,这可以用 +k 取模来实现。解密实际上就是 -k 参数的加密而已。## 原始的...

2019-11-30 21:05:13 317

原创 python3 题解(51 矩阵的乘法)

矩阵的乘法【问题】给定两个矩阵 A( a 行 b 列) B(b行c列),可以用乘法得出一个a行c列的矩阵。试编程解之分析:如果使用第三方的库,比如numpy,这个问题是基本运算,一句话就可以搞定。现在说的是要自己编写。乘法的本质是,把第二个矩阵转置后,把它都看成行向量。然后求所有两个向量的点积。因而,主要的逻辑是定义两个辅助函数,一个求转置,一个求点积。### 矩阵的乘法def...

2019-11-26 15:27:33 235

原创 python3 题解(50 点到直线的距离)

求给定点到给定的直线的距离【问题】已知一点,以及一条直线(通过给定直线上的两个点来决定)。求点到直线的距离。分析:这基本是个纯数学的问题。设点为p0,直线上的两个点p1,p2。思路一:先求出三角形 △p0p1p2\bigtriangleup p_0p_1p_2△p0​p1​p2​ 的面积,又知道底边长p1p2p_1p_2p1​p2​,可以很容易求出高,就是p0到直线的距离。思路二:如下...

2019-11-19 21:00:05 437

原创 python3 题解(49 已知两直线求交点)

两直线交点【问题】两点确定一条直线。两直线只要不平行,就一定有唯一的交点。请编程,输入两组两点的坐标,求这两条直线的交点坐标。两点(x0,y0) (x1,y1) 所确定的直线形式为 ax + by = c需要用点坐标来确定参数 a, b, c 的值。实际上有效的信息是两个值。因为上面的方程同时放大一定的倍数仍然成立。这样,(a,b,c)是一组解,不是一个。求出任意一个即可。点坐标代入,解...

2019-11-18 13:49:57 1440

原创 python3 题解(48 小机器人行走)

小机器人行走【问题】有一个小机器人放在地面上,它可以接受指令,进行转向和行走的动作。‘L’ 表示左转90度。‘R’ 表示右转90度。‘100’ 表示向前走100cm。先对小机器人的位置方位定义个直角坐标:x 轴自西向东,y轴自北向南。小机器人的初始位置为(0,0),并且它头朝北。此时,如果给它一系列的指令,比如:100,L,R,15,R,R,6,17,25,L,L,17,26,15,R...

2019-11-13 13:44:13 592

原创 python3 题解(47 定义有理数类)

有理数类【问题】浮点数的运算很多时候都是近似的,因为计算机无法表示一个无限的小数。有理数总可以表示为整数的比值,并且有理数的四则运算结果还是一个有理数(除0除外)。如果是有四则运算,则可以考虑用有理数表示,这样可以没有舍入误差。分析:记录一个有理数的分子,分母就可以表示一个有理数。需要注意约分。### 定义有理数类class Rati(object): @staticmethod...

2019-11-12 16:38:03 2527

原创 python3 题解(46 身份证号码校验)

身份证号码校验【问题】目前使用的身份证号码是18位的。如果在需要输入身份证的时候,随便编一个数字上去,十有八九是不能通过的。因为,这18位编码要符合一定的校验规则。具体地说,把18位编码的每一位乘以一个权值加起来,总和对11求模,结果必须为1。身分证编码的前17位数必需是数字,最后一位是校验位,可能是数字,也有可能是X,代表10。请编程对已知的身份证号校验是否合格。分析:这个需求很明确...

2019-11-11 20:21:48 735

原创 python3 题解(45 卡号校验 Luhn算法)

银行卡号校验【问题】在自助机上给别人转款,你有没有担心过,万一卡号错了一位,把钱打给不认识的人怎么办呢?其实大可不必这么心累,银行卡的号码并不是连续有效的,它需要符合一定的校验规则,卡号中任何一位发生错误都是一个无效的号码。这个规则是:Luhn算法。具体地说,把卡号码从后向前分别标为1,2,3…奇数位的数不变,偶数位的乘以2,如果是2位数,把它的两个数位上数相加。最后,把这些数求和,如果刚...

2019-11-08 13:51:30 1084

原创 python3 题解(44 控制台画圆)

控制台上近似地画圆【问题】通过输出空格和星号,在控制台上近似地画一个半径为 r 的圆。分析:假定垂直方向为 y 轴,水平方向为 x 轴。如下图:y的值就是当前所在行的值。由此可以算出 x 值。由于圆是对称的,只要画出了它的四分之一,就可以生成全圆。先画出右下部分比较方便。### 在控制台上画圆import mathdef quarter(r): ## 生成半径为r的圆的右...

2019-11-07 13:12:10 295

原创 python3 题解(43 进制转换)

进制转换【问题】因为有十个手指,我们人类喜欢用10进制来表示数字。其实用其它进制表示可能更有合优势。比如,计算机中常用的2进制,16进制。请你来编程,把一种进制表示的数字串,转换为另一种进制的表示。为了表示言行方便,约定最多只到 36 进制,这样用10个阿拉伯数字和26个大写字母就可以表示了。分析:实际上我们只要实现了把一个数转为任意进制,以及把任意进制串转为一个数就可以了。把进制串转...

2019-11-06 11:38:27 245

原创 python3 题解(42 Excel地址转换)

Excel地址转换【问题】Excel表示单元格地址的方式很特别。它用字母来表示列号。A表示第1列,B表示第2列,…,Z表示第26列,然后,AA表示第27列,依此类推。请实现两个转换函数。分别把数字列号转为Excel列号,以及把Excel列号转换为数字列号。分析:这个转换看上去是大约就是26进制,仔细观察又有些区别。如果把A…Z 分别固定为代表1…26Excel 列号转为数字很容易。个...

2019-11-05 11:49:52 218

原创 python3 题解(41 罗马数字转换)

罗马数字转换【问题】因为宗教的原因,古罗马的数字表示体系中没有零。这使得简单的数值表示变得十分复杂,更不用说四则运算。I 表示1,II表示2,III表示3,4不是用IIII,而是IV。接着是…5是V,6是VI,7是VII,8是VIII,就是加法。但,9不是VIIII,而是IX,也就是10减1,X表示10XI表示11,XII表示12,。。。。逢五逢十都有一个固定的字母表示。它们还有:L ...

2019-11-04 19:39:29 256

原创 python3题解(40 通话时长)

通话时长【问题】已知通话的起始时间,结束时间,求通话的时长。时间的格式: 小时:分:秒求通话的总秒数。假设通话时长不大于24小时。比如:23:59:58 到 0:0:2 通话时长为3秒。分析:把不同的单位都转为秒,就容易处理了。即,把时间转换为距离当日午夜的秒数。### 通话时长def sec_span(begin, end): def toHMS(s): #拆分为时分秒...

2019-11-01 13:46:33 444

原创 python3题解 (39 N天后的日期)

N天后的日期【问题】给定一个日期,求它的N天后是什么日期。分析:并不需要调用关于日期的API。只要不断地求某一天的后一天是什么日期就可以了。不是当月的最后一天,则直接 day + 1如果是最后一天,则变成下一个月的第一天。### N天后的日期def ndays(date, n): def leap_year(year): return (year % 4 == 0) and (...

2019-10-30 18:54:24 261

原创 python3 题解(38 格子中的输出)

在格子中输出【问题】给定多个串的列表,每个串含多个项,用逗号分开。把这些项输出到表格中,居中对齐。例如,串表如下:a,bb,cccaaaa,,ccccca,b,c,dddaa,,ccccccccccccccccc,,ee则输出的效果如下:+----+--+-----------------+---+--+| a |bb| ccc | | |+...

2019-10-29 20:37:31 261

原创 python3 题解(37 最大连续次数的字符们)

连续次数最多的字符【问题】给定一个串,其中的字符可能连续出现多次。请列出出现次数最多的字符。注意,出现次数最多的字符可能不只有一个。例如:“aabbbccddde”,其中,b和d都是出现了3次,是出现次数最多的。分析:可以先把所有连续出现的字符分成一组,“aabbbccddde”分组后如下:[“aa”, “bbb”, “cc”, “ddd”, “e”]然后,统计每个元素的长度,得到:...

2019-10-28 16:10:55 408

2021年新版-编程基础训练32题-附提示和答案.pdf

通过编程实践,训练编程逻辑,对编程初学者或在校学生尤其重要。 学习常见的编程思路和想法是进一步进入算法大门的重要装备。

2021-10-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除