python算法
文章平均质量分 80
Lee达森
keep learning...
展开
-
100个python算法超详细讲解:统计学生成绩
1.问题描述有5个学生,每个学生有三门课程的成绩需要统计。要求从键盘输入学生的学号、姓名以及三门课程的成绩,计算出平均成绩,并将原有的数据和计算出的平均成绩存放在磁盘文件stud中。2.问题分析该问题是统计学生信息,要统计的信息包括学生的学号、姓名、三门课程的成绩,以及计算出的平均成绩,显然可以使用Python语言中的列表来存放学生的信息。题目中还要求将学生信息保存到文件中,这就需要打开文件、向文件中写入数据以及关闭文件等一系列操作。3.算法设计先定义一个学生列表,用来存放5个学生的信息。原创 2022-06-15 01:01:43 · 8172 阅读 · 2 评论 -
100个python算法超详细讲解:求出符合要求的素数
1.问题描述编写程序实现将大于某个整数n且紧靠n的k个素数存入某个数组中,同时实现从infile.txt文件中读取10对n和k的值,分别求出符合要求的素数,并将结果保存到outfile.txt文件中。2.问题分析解决该问题首先要能够判断出某个数是否为素数,同时还应该熟练掌握Python语言中读写文件的相关知识。判断某个数是否为素数的方法在第5章中已经详细介绍过了,这里对Python语言的文件概念进行简单介绍。文件指的是存储在外部介质中的数据的集合。运行程序时,通常的做法是将数据保存在变量中原创 2022-06-15 01:01:24 · 1893 阅读 · 0 评论 -
100个python算法超详细讲解:填表格
1.问题描述将1、2、3、4、5和6填入下表中,要求每一列右边的数字比左边的数字大且每一行下面的数字比上面的数字大。编程求出共有几种填写方法? 2.问题分析根据题目要求可知,数字1必然位于表中第一行第一列的单元格中,而数字6则必然位于表中第二行第三列的单元格中,其他几个数字则按照题目要求使用试探法来分别找到合适的位置。3.算法分析根据前面的分析,在实现时可以定义一个一维数组a[6]。数组元素a[0]~a[2]位于表格中的第一行,数组元素a[3]~a[5]位于表格中的第二行。具体如表12.原创 2022-06-14 12:18:27 · 1696 阅读 · 2 评论 -
100个python算法超详细讲解:双色球
1.问题描述编写程序模拟福利彩票的双色球开奖过程,由程序产生出6个红色球和1个蓝色球。要求:1)每期开出的红色球号码不能重复,但蓝色球可以是红色球中的一个。2)红色球的范围是1~33,蓝色球的范围是1~16。3)输出格式为“红色球:x x x x x x 蓝色球:x”。2.问题分析由问题描述可知,该问题是编程来模拟福利彩票中双色球开奖过程,因此需要随机生成6个红色球号码和1个蓝色球号码,显然需要使用Python语言中的random模块来生成随机数。由题目要求可知“每期开出的红色球号码原创 2022-06-14 01:32:13 · 7417 阅读 · 0 评论 -
100个python算法超详细讲解:三色旗
1.问题描述假设有一条绳子,上面有红、白、蓝三种颜色的旗子。开始时绳子上旗子的颜色并没有顺序,现在要对旗子进行分类,并按照蓝、白、红的顺序排列。需要注意的是只能在绳子上进行移动,并且一次只能调换两个旗子,则如何移动才能使旗子移动的次数最少。2.问题分析由问题描述可知,只在一条绳子上移动,而且一次只能调换两个旗子,因此只要保证在移动旗子时,从绳子的开头开始,遇到蓝色的旗子向前移,遇到白色的旗子留在中间,而遇到红色的旗子则向后移。如果要让移动次数最少,则可以使用三个标记b、w、r来分别标记蓝旗原创 2022-06-14 01:30:08 · 563 阅读 · 0 评论 -
100个python算法超详细讲解:数据加密
1.问题描述某个公司采用公用电话来传递数据,传递的数据是4位的整数,且要求在传递过程中数据是加密的。数据加密的规则为:将每位传递的数字都加上5,之后用和除以10的余数来代替该数字,最后将第一位和第四位数字交换,第二位和第三位数字交换。要求通过程序实现数据加密的过程。2.问题分析解决该问题只要按照题目中给出的数据加密规则编程即可。3.算法设计该问题需要进行数据拆分,将拆分后各位上的数字存放在一个一维数组中。对拆分后的各位数字应用加密规则时,可使用for循环结构来实现。4.确定程序框架原创 2022-06-14 01:27:37 · 1836 阅读 · 0 评论 -
100个python算法超详细讲解:约瑟夫环
1.问题描述17世纪的法国数学家加斯帕在《数目的游戏问题》中讲到一个故事:15个教徒和15个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难。于是想了一个办法,将30个人围成一个圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅剩15个人为止。问怎样的排法才能使每次投入大海的都是非教徒?2.问题分析本题明显是一个约瑟夫问题。约瑟夫问题的求解方法很多,这里仅给出一种实现方法。问题描述中说“将30个人围成一个圆圈”,据此可以考虑使用一个循环的链来表原创 2022-06-14 01:23:45 · 1768 阅读 · 0 评论 -
100个python算法超详细讲解:绘制饼状图
1.问题描述使用matplotlib库的pyplot模块提供的绘图函数绘制饼状图。2.问题分析这里以水果的销量为例,来绘制一个饼状图。3.算法分析要绘制一个饼状图,可以使用matplotlib模块下pyplot所提供的函数方法来进行绘制,具体如下:4.完整的程序根据上面的分析,编写程序如下: 在PyCharm下运行程序,结果如图11.15所示。 5.拓展训练使用matplotlib库的pyplot模块提供的函数绘制散点图。关于matplotlib库的pyplot模块提供的函数在原创 2022-06-14 01:21:30 · 3377 阅读 · 0 评论 -
100个python算法超详细讲解:填充彩色图形
1.问题描述使用turtle绘制填充彩色图形。2.问题分析这里我们使用turtle的方法来绘制一座房子和一个太阳,然后填充上对应的颜色。3.算法设计要绘制一座房子和一个太阳,需要用到turtle模块中的以下方法。·turtle.Pen():启动画笔。·turtle.color():设置颜色。·turtle.hideturtle():隐藏海龟。·turtle.begin_fill():开始填充颜色。·turtle.forward():前进。·turtle.left(180-60):左转原创 2022-06-14 01:18:52 · 7626 阅读 · 0 评论 -
100个python算法超详细讲解:绘制空心菱形
1.问题描述编程打印如图11.12所示的空心菱形图案。 2.问题分析该问题要求绘制空心菱形,在此基础上,还可以添加其他要求,如尽可能少地使用printf语句,或者由键盘输入正数n,并绘制出有2*n+1行的空心菱形图案。那么针对此类问题我们究竟应该从何入手分析呢?观察图11.12可知,图中每一行和每一列的星号和空格所出现的位置并非杂乱无章的,而是都呈现出一定的规律。这样就可以将绘制空心菱形的问题转换为找出这些星号和空格与它们所在行与列之间存在的某种规律的问题。只要这个规律找到了,那么问题就迎原创 2022-06-14 01:16:47 · 2467 阅读 · 0 评论 -
100个python算法超详细讲解:绘制余弦曲线
1.问题描述绘制一条0~360°(2π)的余弦函数cos(x)曲线。2.问题分析要绘制余弦函数曲线,需要使用到Python语言的NumPy库和matplotlib库,绘制的余弦函数曲线在0~360°(2π)的范围内。3.算法设计该程序的核心部分如下:1)生成一个0~360°的数组。X = np.linspace(0, 2 * np.pi, 100) #生成指定大小的一维数组2)生成余弦值。Y = np.cos(X) # 返回数组元组的余弦值3)传入数据绘制余弦函数曲线。# 传入数据原创 2022-06-14 01:10:15 · 3072 阅读 · 0 评论 -
100个python算法超详细讲解:画彩色图形
1.问题描述使用turtle绘制一个彩色多边形图形。2.问题分析这里绘制一个彩色的六边形,可以使用一个颜色列表,为这个六边形设置多种颜色。我们可以设计一个算法来实现,具体见算法分析。3.算法分析这里使用一个for循环来实现绘制六边形,让画笔不停地绘制,同时这个六边形会逐渐变大。在for循环内设置画笔的颜色,使得每条边都是不同的颜色,并且随着循环次数的不断增加,画笔不断地前进、左转,同时画笔宽度也在不断变化。算法如下:4.完整的程序根据上面的分析,编写程序如下:5.运行结果在P原创 2022-06-13 13:30:20 · 1669 阅读 · 0 评论 -
100个python算法超详细讲解:画圆和圆弧
1.问题描述使用turtle中提供的绘图函数绘制一个笑脸。2.问题分析一个笑脸图形,可以分解为一个大圆(脸部轮廓)、两个小圆(眼睛)、三条直线(鼻子)和一条圆弧(嘴巴)。因此现在要解决的问题是如何在屏幕上画出圆、圆弧等曲线。3.算法设计要绘制圆形、圆弧等图形,可以使用turtle模块提供的函数方法,在前面我们详细地介绍了turtle的函数方法,这里使用turtle的如下方法来绘制所需的图形。·turtle.width(2):设置宽度。·turtle.color("black"):设置画原创 2022-06-13 13:28:30 · 3202 阅读 · 0 评论 -
100个python算法超详细讲解:画直线
1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:原创 2022-06-13 13:27:18 · 6942 阅读 · 0 评论 -
100个python算法超详细讲解:π的近似值
1.问题描述使用蒙特卡罗法求π的近似值。蒙特卡罗方法或称计算机模拟方法,是一种基于“随机数”的计算方法。这一方法源于美国在第二次世界大战时研制原子弹的“曼哈顿计划”。该计划的主持人之一数学家冯·诺依曼用驰名世界的赌城——摩纳哥的蒙特卡罗来命名这种方法,为它蒙上了一层神秘的色彩。蒙特卡罗方法的思路是,在一个单位边长的正方形中,以边长为半径,以一个顶点为圆心,在这个正方形上作四分之一圆。在正方形中随机地投入很多点,使所投入的点落在正方形中每一个位置的机会相等。若点落入四分之一圆内则计数。重复地原创 2022-06-13 13:25:18 · 5632 阅读 · 1 评论 -
100个python算法超详细讲解:角谷猜想
1.问题描述角谷猜想在西方常被称为西拉古斯猜想,据说这个问题首先是在美国的西拉古斯大学被研究的,而在东方,这个问题则由将它带到日本的日本数学家角谷静夫的名字来命名,故被称为角谷猜想。角谷猜想的内容是任给一个自然数,若为偶数则除以2,若为奇数则乘以3再加1,这样得到一个新的自然数之后再按照前面的法则继续演算,若干次以后得到的结果必然为1。在数学文献里,角谷猜想也常常被称为“3X+1问题”。请编程验证角谷猜想。2.问题分析先通过几个实例来理解角谷猜想的含义。取自然数n=6,则根据角谷猜想,有原创 2022-06-13 13:22:33 · 11361 阅读 · 0 评论 -
100个python算法超详细讲解:四方定理
1.问题描述四方定理是数论中的重要定理,它可以叙述为“所有的自然数至多用4个数的平方和就可以表示出来”。例如:25=1*1+2*2+2*2+4*499=1*1+1*1+4*4+9*9要求编写程序来验证四方定理。2.问题分析问题描述中说“所有的自然数至多用4个数的平方和就可以表示出来”,既然是至多用4个数的平方和,那么三个、两个和一个数的平方和的情况要不要考虑在内呢?而且有些数是不能分解为4个数的平方和的,比如17,只能分解成两个或三个数的平方和:17=1*1+4*4 -- 分解为两个数原创 2022-06-13 13:20:39 · 2386 阅读 · 0 评论 -
100个python算法超详细讲解:回文数的形成
1.问题描述任取一个十进制正整数,将其倒过来后与原来的正整数相加,会得到一个新的正整数,重复以上步骤,则最终可得到一个回文数。请编程进行验证。2.问题分析回文数是指这个数无论从左向右读还是从右向左读都是一样的,如121、11等。回文数的这一形成规则目前还未得到数学上的验证,还属于一个猜想。有些回文数的形成要经过上百个步骤,因此此处仅做编程验证,并打印形成过程。如输入正整数78,则按照问题描述中回文数的形成规则,会有如下形成过程:78+87=165165+561=726726+627=原创 2022-06-13 13:18:47 · 3219 阅读 · 1 评论 -
100个python算法超详细讲解:奇数平方的有趣性质
【100个python算法超详细讲解】@谷哥技术1.问题描述任意奇数的平方有这样的有趣性质:任意奇数的平方与1的差是8的倍数。要求编程验证奇数的这个性质。2.问题分析本题是一个数学定理,我们先来验证该定理的成立。设任意奇数可以表示为2n+1,则将其平方后再减1为:(2n+1) 2 -1=(2n+1+1)(2n+1-1)=4n(n+1)·当n为奇数时,n+1为偶数,4n(n+1)=8*n*[(n+1)/2],显然为8的倍数。·当n为偶数时,n+1为奇数,4n(n+1)=8*n/2*(n+原创 2022-06-12 00:58:16 · 444 阅读 · 0 评论 -
100个python算法超详细讲解:逆序输出数字
【100个python算法超详细讲解】@谷哥技术1.问题描述编程实现将输入的整数逆序输出。2.问题分析前面我们已经接触过很多的递归问题了,这些递归问题可以简单地分成两类:一类可以归结为数值问题,还有一类为非数值问题。数值问题的递归是指可以表达为数学公式的问题,如9.1节的猴子吃桃问题,9.4节的求年龄问题。非数值问题的递归是指问题本身难以用数学公式来表达的问题,如9.3节的汉诺塔问题。对于数值问题,由于本身可以表达为数学公式,所以可以从数学公式入手来推导出问题的递归定义,然后确定问题的边原创 2022-06-11 02:40:29 · 11353 阅读 · 2 评论 -
100个python算法超详细讲解:汉诺塔问题
【100个python算法超详细讲解】@谷哥技术1.问题描述汉诺塔问题是一个古典的数学问题,它只能用递归方法来解决。在古代有一个梵塔,塔内有A、B、C三个座。开始时A座上有64个盘子,盘子大小不同,但保证大的在下,小的在上。现在有一个和尚想将这64个盘子从A座移动到C座,但他每次只能移动一个盘子,且在移动过程中在3个座上都必须保持大盘在下小盘在上的状态。在移动过程中可以利用B座,要求编程将移动步骤打印出来。汉诺塔示意图如图9.11所示。2.问题分析汉诺塔问题是一个著名的问题,由于条件是每次只能移原创 2022-06-11 02:36:05 · 5339 阅读 · 0 评论 -
100个python算法超详细讲解:递归解决分鱼问题
1.问题描述A、B、C、D、E这5个人合伙夜间捕鱼,凌晨时都已经疲惫不堪,于是各自在河边的树丛中找地方睡着了。第二天日上三竿时,A第一个醒来,他将鱼平分为5份,把多余的一条扔回河中,然后拿着自己的一份回家去了;B第二个醒来,但不知道A已经拿走了一份鱼,于是他将剩下的鱼平分为5份,扔掉多余的一条,然后只拿走了自己的一份;接着C、D、E依次醒来,也都按同样的办法分鱼。问这5个人至少合伙捕到多少条鱼?每个人醒来后所看到的鱼是多少条?2.问题分析假设5个人合伙捕了x条鱼,则“A第一个醒来,他将鱼平分原创 2022-06-11 02:33:18 · 2902 阅读 · 1 评论 -
100个python算法超详细讲解:递归解决年龄问题
【100个python算法超详细讲解】@谷哥技术1.问题描述有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁。问第4个人多少岁,他说比第3个人大2岁。问第3人多少岁,他说比第2个人大2岁。问第2个人多少岁,他说比第1个人大2岁。最后问第1个人多少岁,他说他是10岁。编写程序,求出当输入某个人时其对应的年龄。2.问题分析在分析该问题前先介绍函数递归调用的基础知识。1)函数递归调用的定义:如果在调用一个函数的过程中又出现直接或间接地调用该函数本身,则称为函数的递归调用。Python语言原创 2022-06-11 02:30:32 · 3065 阅读 · 0 评论 -
100个python算法超详细讲解:卡布列克常数
【100个python算法超详细讲解】@谷哥技术1.问题描述对于任意一个4位数n,进行如下的运算:1)将组成该4位数的4个数字由大到小排列,形成由这4个数字构成的最大的4位数。2)将组成该4位数的4个数字由小到大排列,形成由这4个数字构成的最小的4位数(如果4个数中含有0,则得到的数不足4位)。3)求这两个数的差,得到一个新的4位数(高位0保留)。这称为对n进行了一次卡布列克运算。存在这样一个规律:对一个各位数字不全相同的4位数重复进行若干次卡布列克运算,最后得到的结果总是6174,这个数原创 2022-06-11 02:27:42 · 1048 阅读 · 0 评论 -
100个python算法超详细讲解:杨辉三角形
【100个python算法超详细讲解】@谷哥技术1.问题描述在屏幕上打印杨辉三角形。杨辉三角形,又称贾宪三角形、帕斯卡三角形,是二项式系数在三角形中的一种几何排列。图9.2显示了杨辉三角的前7行。 2.问题分析杨辉三角形中的数,正是(x+y)的N次方幂展开式各项的系数。本题作为程序设计中具有代表性的题目,求解的方法很多,下面以递归的方法来打印杨辉三角形。从杨辉三角形的特点出发,可以总结出:1)第x行有x个值(设起始行为第1行)。2)对于第x行的第y(y>=3)个值,有:当y=1或y=x时,原创 2022-06-11 02:25:10 · 1645 阅读 · 0 评论 -
100个python算法超详细讲解:猴子吃桃
【100个python算法超详细讲解】@谷哥技术1.问题描述一个猴子摘了一些桃子,它第一天吃掉了其中的一半然后再多吃了一个,第二天照此方法又吃掉了剩下桃子的一半加一个,以后每天如此,直到第十天早上,猴子发现只剩下一个桃子了,问猴子第一天总共摘了多少个桃子?2.问题分析假设Ai为第i天吃完后剩下的桃子的个数,A0表示第一天共摘下的桃子,显然,本题要求的是A0。根据问题描述,前后相邻两天之间的桃子数应存在如下关系::A(i+1)=Ai-(Ai/2+1)此式可转换为:Ai=2 A(i+1)+原创 2022-06-11 02:20:38 · 3688 阅读 · 0 评论 -
100个python算法超详细讲解:在指定位置插入字符
【100个python算法超详细讲解】@谷哥技术1.问题描述请编写程序,实现以下功能:在字符串中的所有数字字符前加一个“$”符号。例如,输入A1B23CD45,输出A$1B$2$3CD$4$5。2.问题分析在字符串S的所有数字字符前加一个“$”符号,可以使用字符串函数结合数组来实现该功能。首先遍历这个字符串,将字符串的字符元素存入数组,然后遍历数组元素,利用字符串的isdigit()函数来判断这个元素是否是数字,如果是,就在该数字的前面添加上“$”符号。其对应的代码如下:3.完整的程序原创 2022-06-10 02:00:18 · 2102 阅读 · 0 评论 -
100个python算法超详细讲解:删除“*”符号
【100个python算法超详细讲解】@谷哥技术1.问题描述现在有一串字符需要输入,规定输入的字符串中只包含字母和“*”符号。请编写程序,实现除了字符串前后的“*”之外,将串中其他的“*”全部删除。例如,假设输入的字符串为:****A*BC*DEF*G********,删除串中的“*”后,字符串变为:****ABCDEFG********。2.问题分析该问题需要对字符串进行操作。在Python语言中,可以使用字符串相关的函数结合数组来实现该功能。3.字符串在Python 3中有6种标准的数原创 2022-06-10 01:56:48 · 1715 阅读 · 0 评论 -
100个python算法超详细讲解:马踏棋盘
【100个python算法超详细讲解】@谷哥技术1.问题描述国际象棋的棋盘为8×8的方格棋盘。现将“马”放在任意指定的方格中,按照“马”走棋的规则将“马”进行移动。要求每个方格只能进入一次,最终使得“马”走遍棋盘的64个方格。编写一个Python程序,实现马踏棋盘操作,要求用1~64这64个数字标注“马”移动的路径,也就是按照求出的行走路线,将数字1~64依次填入棋盘的方格中,并输出。2.问题分析国际象棋中,“马”的移动规则如图8.17所示。图中实心的圆圈代表“马”的位置,它下一步可移动到图中原创 2022-06-10 01:53:29 · 1269 阅读 · 0 评论 -
100个python算法超详细讲解:魔方阵
【100个python算法超详细讲解】@谷哥技术1.问题描述编写程序,实现如图8.13所示的5-魔方阵。2.问题分析所谓“n-魔方阵”,指的是使用l~n 2 共n 2 个自然数排列成一个n×n的方阵,其中n为奇数。该方阵的每行、每列以及对角线元素之和都相等,并为一个只与n有关的常数,该常数为n×(n 2 +1)/2。例如,图8.13所示的5-魔方阵,其第一行、第一列以及主对角线上各元素之和如下。第一行元素之和:17+24+1+8+15=65第一列元素之和:17+23+4+10+11=65原创 2022-06-10 01:49:45 · 4287 阅读 · 1 评论 -
100个python算法超详细讲解:邮票组合
【100个python算法超详细讲解】@谷哥技术1.问题描述我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或几张的组合,可以满足不同邮件的不同邮资。现在,邮局有4种不同面值的邮票,在每个信封上最多能贴5张邮票,面值可以相同也可以不同,但至少要贴3种不同面值的邮票,要求编程求出用这4种面值所能组成的邮资的最大值。2.问题分析输入:4种邮票的面值,存入数组stamp[4]。输出:用这4种面值组成的邮资最大值。按题目的要求,a、b、c、d面值的邮票均可以取0、1、2、3原创 2022-06-10 01:46:31 · 1133 阅读 · 0 评论 -
100个python算法超详细讲解:选美比赛
1.问题描述用Python语言编写程序完成以下任务:一批选手参加比赛,比赛的规则是最后得分越高,名次越低。当半决赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后的名次,获得相同分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。例如:选手序号:1,2,3,4,5,6,7选手得分:5,3,4,7,3,5,6输出名次为:3,1,2,5,1,3,42.问题分析读者可能会不假思索地说出解决此问题的方法,将选手的得分存放到一个数组中,然后按从小到大进行排列,排列靠前的名次靠前原创 2022-06-10 01:45:06 · 401 阅读 · 0 评论 -
100个python算法超详细讲解:狼追兔子
【100个python算法超详细讲解】@谷哥技术1.问题描述一只兔子躲进了10个环形分布的洞中的某一个。狼在第一个洞中没有找到兔子,就隔一个洞,到第三个洞中去找;如果没有找到,就隔两个洞,到第六个洞中去找;以后每次多隔一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?2.数组在Python语言中,其数据类型列表就是数组。它是以方括号“[]”包围的数据类型,各个数据之间使用逗号“,”隔开。其内部元素可以是Python语言中的任何数据类型,也可以是另一个列表。我们可以通过原创 2022-06-10 01:42:44 · 576 阅读 · 1 评论 -
100个python算法超详细讲解:矩阵转置
【100个python算法超详细讲解】@谷哥技术1.问题描述编写一个程序,将一个3行3列的矩阵进行转置。2.问题分析要解决该问题首先应该清楚什么是矩阵的转置。矩阵转置在数学上的定义为:设A为m×n阶矩阵(即m行n列的矩阵),其第i行第j列的元素是a(i,j),即A=a(i,j) m×n定义A的转置为这样一个n×m阶矩阵B,满足B=a(j,i) n×m ,即b(i,j)=a(j,i)(B的第i行第j列元素是A的第j行第i列元素),记为A'=B。假设有如下的矩阵A:则经过转置过,即将矩阵的第i原创 2022-06-10 01:40:46 · 4321 阅读 · 0 评论 -
100个python算法超详细讲解:农夫过河
【100个python算法超详细讲解】@谷哥技术1.问题描述一个农夫在河边带了一匹狼、一只羊和一棵白菜,他需要把这三样东西用船带到河的对岸。然而,这艘船只能容下农夫本人和另外一样东西。如果农夫不在场的话,狼会吃掉羊,羊也会吃掉白菜。请编程为农夫解决这个过河问题。2.问题分析根据问题描述可知,该问题涉及的对象较多,而且运算步骤也较为复杂,因此在使用Python语言实现时,首先需要将具体问题数字化。由于整个过程的实现需要多步,而不同步骤中各个事物所处的位置不同,因此可以定义一个二维数组(嵌套列原创 2022-06-10 01:35:20 · 4323 阅读 · 2 评论 -
100个python算法超详细讲解:平分7筐鱼
【100个python算法超详细讲解】@谷哥技术1.问题描述2、乙、丙三位渔夫出海打鱼,他们随船带了21只箩筐。当晚返航时,他们发现有7筐装满了鱼,还有7筐装了半筐鱼,另外7筐是空的,由于他们没有秤,只好通过目测认为7个满筐鱼的重量是相等的,7个半筐鱼的重量是相等的。在不将鱼倒出来的前提下,怎样将鱼和筐平分为三份?2.嵌套列表如果一个列表的元素是列表,那么这个列表就是一个嵌套列表。一个简单的嵌套列表定义如下:使用for循环遍历这个列表,代码如下:打印结果如图8.1所示。同样可以使用原创 2022-06-10 01:31:46 · 448 阅读 · 0 评论 -
100个python算法超详细讲解:掷骰子
【100个python算法超详细讲解】@谷歌学术1.问题描述骰子是一个有6个面的正方体,每个面分别印有1~6个小圆点代表点数。假设这个游戏的规则是两个人轮流掷骰子6次,并将每次投掷的点数累加起来,点数多者获胜,点数相同则为平局。要求编写程序模拟这个游戏的过程,并求出玩100盘之后谁是最终的获胜者。2.问题分析由于每个人掷骰子所得到的点数是随机的,所以需要借助随机数发生器,每次产生一个1~6之间的整数,以此模拟玩者掷骰子的点数。要得到6个不同的随机值,只需要调用Python的random原创 2022-06-09 01:20:27 · 3413 阅读 · 0 评论 -
100个python算法超详细讲解:24点游戏
【100个python算法超详细讲解】@谷歌学术1.问题描述在屏幕上输入1~10范围内的4个整数(可以有重复),对它们进行加、减、乘、除四则运算后(可以任意的加括号限定计算的优先级),寻找计算结果等于24的表达式。例如输入4个整数4、5、6、7,可得到表达式:4*((5-6)+7)=24。这只是一个解,本题目要求输出全部的解。要求表达式中数字的顺序不能改变。2.问题分析本题最简便的解法是应用穷举法搜索整个解空间,筛选出符合题目要求的全部解。因此,关键的问题是如何确定该题的解空间。假设输入原创 2022-06-09 01:18:03 · 1514 阅读 · 0 评论 -
100个python算法超详细讲解:抢30游戏
【100个python算法超详细讲解】@谷歌学术1.问题描述由两个人玩“抢30”游戏,游戏规则是:第一个人先说“1”或“1,2”,第二个人要接着往下说一个或两个数,然后又轮到第一个人,再接着往下说一个或两个数。这样两人反复轮流,每次每个人说一个或两个数都可以,但是不可以连说三个数,谁先抢到30,谁得胜。2.问题分析首先,分析这个游戏是否公平。一个游戏的公平性主要体现在游戏双方赢的机会性,如果机会性一样大,就公平,否则就不公平。那么,这个游戏中两人赢的机会性是不是一样大呢?经分析可知,获胜者原创 2022-06-09 01:15:02 · 1903 阅读 · 1 评论 -
100个python算法超详细讲解:搬山游戏
【100个python算法超详细讲解】@谷歌学术1.问题描述设有n座山,计算机与人作为比赛的双方,轮流搬山。规定每次搬山数不能超过k座,谁搬最后一座谁输。游戏开始时,计算机请人输入山的总数n和每次允许搬山的最大数k,然后请人开始,等人输入了需要搬走的山的数目后,计算机马上打印出它搬多少座山,并提示尚余多少座山。双方轮流搬山直到最后一座山搬完为止。计算机会显示谁是赢家,并问人是否要继续比赛。如果人不想玩了,计算机便会统计出共玩了几局,双方胜负如何。2.问题分析程序结构:程序中先输入山的座数原创 2022-06-09 01:12:42 · 342 阅读 · 0 评论