专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Python实现枚举算法一波三折的优化

  头条创作挑战赛昨天看到这样一个例子,一辆车肇事逃逸,现场有三个目击证人,第一个说我看到车牌的前两位数字一样,第二个说我看到车牌的后两位数字一样,但和前面的数字不同,第三个说车牌的四位数刚好等于一个数的平方。根据以上信息找出符合条件的四位数车牌号。
  书上给出的算法是,首先列举前两位所有可能的数字(从0到9),然后在此基础上列举后两位所有的可能(从0到9),得到所有可能的四位数,再逐一判定这些四位数是否符合条件,条件当然就是该四位数等于某个数的平方。代码如下。importtime导入time库,测试一下该程序的效率flog0设置一个标志,用来判断是否找到目标值start1time。perfcounter()记录程序开始运行时间foriinrange(10):从0到9枚举所有可能的值,这里是前两位ifflog:判断是否找到目标值,如果找到结束循环breakforjinrange(10):从0到9枚举后两位所有可能的值ifflog:判断是否找到目标值,如果找到结束循环breakifi!j:判断是否满足前两位数不等于后两位,k1000i100i10jj如果符合,给出所有可能的四位数fortempinrange(32,100):列举完全平方数是四位数的所有数iftemptempk:判断该四位数是否等于完全平方数print(k)输出符合条件的四位数flog1把标志设置为已找到break结束当前循环end1time。perfcounter()记录程序运行结束的时间print(end1start1)输出程序执行时间
  找到的四位数:7744
  程序运行时间:0。0008686760011187289
  如果没有break,最外层循环将执行10次,每一次外层循环第二层循环都将执行10次,第二层循环执行一次最内层循环将执行68次(1003268,循环只在满足外层i不等于第二层j的条件下执行),所以该程序并没有执行1010686800次,而是109686120次。每一层循环都要判断是否找到目标值,找到的话用break终止循环(break只能终止当前层的循环)
  程序运行过程如下:
  i:0j:1k:11
  i:0j:2k:22
  i:0j:3k:33
  i:0j:9k:99
  i:1j:0k:1100
  i:1j:2k:1122这里跳过了1111,因为前后不能相等
  i:7j:4k:7744
  7744如果使用break的话,那么程序运行到此为止。
  i:7j:5k:7755
  i:7j:6k:7766
  i:8j:6k:8866
  i:8j:7k:8877
  i:8j:9k:8899
  i:9j:8k:9988
  本题是不是一定要使用三层嵌套循环?能否对程序改进优化呢?下面尝试从找出的完全平方数中寻找符合条件的答案,也就是从第三个条件出发去找符合第一、二个条件的值,程序如下所示。importtime导入时间库p〔iforiinrange(4)〕初始化列表p,p中用来存放可能的四位数中每一位的数值starttime。perfcounter()记录程序开始运行时间foriinrange(32,100):枚举所有完全平方后是四位数的tii计算出所有可能的四位数forjinrange(4):依次取出组成四位数的每一位数p〔j〕t(10(j1))(10j)通过求余加整除的方式得出每一位ifp〔0〕p〔1〕andp〔2〕p〔3〕andp〔0〕!p〔2〕:判断前两位相同,并且后两位相同,并且前后不同的四位数print(t)输出符合条件的四位数break结束循环endtime。perfcounter()记录程序结束时间print(endstart)输出所用时间
  找到的四位数:7744
  程序运行时间:0。0002392329988651909
  如果没有break语句,该程序应该执行272次,外层循环执行68次,每执行一次内层循环执行4次,684272。
  程序还能不能进一步优化改进呢?还是可以的,借助字符串实现快速查找和比对,而不用执行内循环,代码如下所示。importtime导入时间库starttime。perfcounter()记录程序开始运行时间foriinrange(32,100):依次读取每一个经过完全平方可以得到四位数的值tii计算得到每一个四位的完全平方数t1str(t)把四位数值转化为字符串ift1〔0〕t1〔1〕andt1〔2〕t1〔3〕andt1〔0〕!t1〔2〕:通过字符切片判断前两位相同,后两位相同,但前后不同的数print(t)输出符合结果的四位数break结束循环endtime。perfcounter()记录程序结束时间print(endstart)输出程序运行时间
  找到的四位数:7744
  程序运行时间:4。287200135877356e05
  这个程序只有一层循环68次,每执行一次都需要使用Python内置的字符串操作,不过运行时间是三个程序中最短的。

狂飙大嫂妆我先画为敬!随着近期狂飙的热播,剧中主要人物纷纷火了一把。大嫂在剧中可是名副其实的美强狠代表,不少网友也纷纷求大嫂同款口红色号。其实大嫂妆的精髓不单单在口红,更重要的在于她精致服帖的底妆。剧中在积分榜一路狂飙各位culers,大家好!北京时间2月6日0400,巴萨在主场迎战塞维利亚,最终以30的比分战胜对手,继续以8分的优势领跑积分榜。此外,今天还是罗贝托的31岁生日,让我们祝他生日快专访狂飙老默从通信兵到演员,我很能吃苦告诉老默,我想吃鱼了女儿说过,压力大的时候可以吃糖热播剧狂飙里的棒棒糖杀手老默因其矛盾隐忍的性格特点在这个春节被很多人熟知每当他戴上标志性的白手套吃起棒棒糖准备执行任务时都会让观众按摩几百次,才发现按摩的本质就是花钱睡觉!即使你从未走进过按摩店,也一定在理发店体验过被按摩的感觉。闭上眼睛,感受来自头皮的抓挠,麻酥酥,像电流噼啪通过灵魂,说不清究竟是疼,还是痒。不知不觉间疲惫卸去,眉头舒展,到了冲掉泡苹果市值暴跌6。7万亿,这锅中国不背离不开的中国化iPhone14发布不到半年,14系列手机在各大电商平台纷纷大降价,苹果放低身段背后,隐藏着什么呢?原因是2月2日,苹果发布第一财季的财报营收利润和销售额均未达到预期,是近4年来最今年开春长裤不用备太多,有这4条就够了,时尚高级又显腿长换季对于女性朋友们来说都很头疼,不仅要重新买一些衣服,还要紧随时尚潮流,让着装方式与时俱进。不过对于中年妈妈们,咱们买衣服也不需要太很多,特别是裤装。这次就来为中年妈妈们介绍4款实侍者公庙(大歇困亭)就是蛇庙千年古刹三平寺(国家4A级旅游区)附近有座蛇庙,当地人称之为侍者公庙,外地游客很少人知道它到底在哪里?从三平寺驾车往东翻越几座山(约3公里),来到与漳州龙海区三闽塘交界处的大歇困岭2021年新疆全域游059寻访西北边防第一连7月23日吉木乃口岸哈巴河县兵10师185团1连哈巴河县海拔500米行驶里程320km早上9点出发,路过哈巴河县去往185团。沿途草原戈壁,略显荒凉。穿过哈巴河县城,看了下窝友推荐任村古镇今天是2月6号,骑车去了任村古镇,任村位林州市西北,与山西平顺县,河北涉县相邻,素有鸡鸣闻三省之称。任村古镇始建于元代至正五年(1345年),当时有任氏兄弟从河北邯郸迁到此地落户,中国公民赴20国出境团队游重启新加坡旅游业界期待中国游客到来来源央视新闻客户端6日,中国公民赴20个国家的出境团队旅游重启。在首批20个目的地国家名单中,包括了新加坡。总台记者了解到,新加坡旅游业界积极准备,期待中国游客的到来。新加坡是一个太火了!26000元人,1分钟抢光作者丨高江虹,实习生,叶晴编辑丨包芳鸣,见习编辑,张铭心图源丨摄图网2月6日,全国旅行社及在线旅游企业经营中国公民赴有关国家出境团队旅游和机票酒店业务正式试点恢复。同程旅行数据显示
海外回归一批竹简,揭开胡亥登基历史真相赵高背了两千年黑锅秦朝历经二世而亡,作为秦朝亡国的罪魁祸首之一,胡亥一直被认为是宦官赵高操控朝政的傀儡。秦始皇驾崩后,对于胡亥是如何登上皇位的说法众说纷纭,有人说他是篡位登基,也有人说他是按照遗诏顺古人曾用贝壳做货币,我们是不是可以去捡贝壳来当货币用呢?贝壳是货币?我们从电视网络博物馆了解到,古时候的人们曾经用贝壳作为货币。那么你是不是在想,我是不是可以去海边多捡些贝壳来,到市市场上去当钱花呢?人们在早期的经济活动中,是用贝壳来充他是我国历史上最神秘的人,徒弟们总是相爱相杀,均不得善终他是中国历史上最具神秘色彩的人,精通诸子百家,兵法谋略,常年隐居在鬼谷中,教育出众多的历史风云人物,他任意一徒弟均可搅动天下,威震诸侯。他就是千古奇人鬼谷子。就是这么一个超凡旷世的共享单车的忧与优资本收钱,政府买单,从第一波的资本乱战,市场整合,终于三足鼎立,为了收割更多,除了涨价又来甩锅,共享单车被扣车,明显又在给政府压力,让政府买单,全国混战的时候为啥就不管不顾,吞并那华为打车来了今日,华为宣布进入网约车市场,借助其华为手机用户量,再加上爱国情怀的加持,入局网约车市场,估计会成为一个强有力的挑战者。最近华为已经与T3洽谈对接全量加入,简而言之就是数据共享,用维信诺独供诺基亚首款AMOLED手机OLED渗透率将升至469月1日,诺基亚在德国IFA2022上发布了三款全新手机,包括诺基亚X305GG605G及C31。机身加入环保概念,产品一如既往延续Nokia的产品定位和调性,主打durabili向上捅破天手机正式步入卫星通信时代一华为Mate50系列将有向上捅破天的通信技术突破全新的华为Mate50系列将集成搭载国内首颗手机北斗短报文通信射频基带一体化芯片,摆脱基站依赖永不断线。Mate50定于9月6日首前后双屏设计,还有8256G超大大内存,飞利浦新机线上首次露脸今年已经在国内推出了多款智能手机的PHILIPS飞利浦手机再次更新了产品线,型号为飞利浦S706的新作不久前打着旗舰旗号正式登陆线上市场,官方为飞利浦S706制定的指导价格确实够旗苹果华为摩托罗拉将发布智能手机新旗舰(全球TMT2022年9月5日讯)TMT要闻预告(9月5日11日)苹果发布iPhone14系列华为发布Mate50系列摩托罗拉发布edge30系列新机。9月5日苹果限定员工回到办公今年Q2全球高端手机出货占比出炉,苹果以57份额再次摘得桂冠此前,已有数据分析机构发布了2022年第二季度国内智能手机市场出货情况分析报告。如今,随着时间的推移,CounterpointResearch公布了今年第二季度全球高端智能手机市场华为Mate50Pro机模和价格曝光,新机将于明天发布明天下午,华为将召开发布会正式推出Mate50系列新旗舰。在发布会前一天,有网友晒出了华为Mate50Pro的机模,提前展示了一波新机的外观设计。可以看到,华为Mate50Pro的
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网