python算法(1)抓交通肇事犯「建议收藏」

python算法(1)抓交通肇事犯「建议收藏」抓交通肇事犯1.问题描述一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下了车号的一些特征。甲说:牌照的前两位数字是相同的:乙说:牌照的后两位数字是相同的,但与前两位

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

抓交通肇事犯

 

1.问题描述

一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下了车号的一些特征。甲说:牌照的前两位数字是相同的:乙说:牌照的后两位数字是相同的,但与前两位不同:丙是数学家,他说:4位的车号刚好是一个整数的平方。请根据以上线索求出车号。
 

2.确定程序框架

python算法(1)抓交通肇事犯「建议收藏」
根据流程,构建程序框架如下:

if __name__ == '__main__':
    # i代表前两位车牌号数字,j代表后两位车牌号数字,k代表车牌号
    for i in range(10):
        for j in range(10):  # 穷举前两位和后两位车牌数字
            # 判断前两位和后两位数字是否相同
            if i != j:
                # 组成4位车牌号码
                k = 1000 * i + 100 * i + 10 * j + j
                # 判断k是否是某个数的平方,是就输出

 

3.判断车牌k是是否为某个数的平方,是就输出

再次利用循环来实现,循环变量 temp求平方后和车牌号k比较,相等则投到车牌号,优化算法,temp的初值应该从31开始,因为小于30的数的平方小于4位数。故该层循环为最内层循环,对每一个年牌号均作如此操作。

for temp in range(31, 100):
    if temp * temp == k:
        print("车牌号为:", k)

 

4.完整程序

根据上面的分析,完整程序如下:

if __name__ == '__main__':
    # i代表前两位车牌号数字,j代表后两位车牌号数字,k代表车牌号
    for i in range(10):
        for j in range(10):  # 穷举前两位和后两位车牌数字
            # 判断前两位和后两位数字是否相同
            if i != j:
                # 组成4位车牌号码
                k = 1000 * i + 100 * i + 10 * j + j
                # 判断k是否是某个数的平方,是就输出
                for temp in range(31, 100):
                    if temp * temp == k:
                        print("车牌号为:", k)

 

5.运行结果

Pycharm运行程序,结果如下

车牌号为: 7744

 

6.优化算法

针对上述程序,如果已经找到相应的车牌号,请读者考虑循环是否还需要继续呢?答案是肯定的,因为算法在设计穷举循环的时候,并没有在找到车牌的时候就退出循环,而是继续穷举其他ij的情况。我们可以改进算法,设置一个“标识变量”,该变量初值为0,一旦找到车牌号,则改变该标识变量的值为1,每次循环判断一下标识变量的值。如果值为1,则退出所有循环,这样能有效的减少循环次数,改进的程序如下:

if __name__=="__main__":
    # i代表前两位车牌号数字,j代表后两位车牌号的数字,k代表车牌号
    flog = 0  # 循环标识变量,为1时推出所有循环
    for i in range(10):
        if flog:
            break
        for j in range(10):  # 穷举前两位和后两位车牌数字
            if flog:
                break
            # 判断前两位和后两位数字是否相同
            if i != j:
                # 组成4位车牌号码
                k = 1000 * i + 100 * i + 10 * j + j
                # 判断k是否是某个数的平方,是就输出
                for temp in range(31, 100):
                    if temp * temp == k:
                        print("车牌号为: ", k)
                        flog = 1
                        break
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/165714.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ShFileOperation函数详解

    ShFileOperation函数详解[WinAPI]ShFileOperation函数详解2010-04-1110:24ShFileOperation只有一个参数是LPSHFILEOPSTRUCT型的相当于delphi中的TSHFileOpStruct;  c语言定义为:  typedef struct _SHFILEOPSTRUCT{   HWND         hwnd

    2022年7月18日
    17
  • bitr函数的用法_average函数怎么用

    bitr函数的用法_average函数怎么用BitBlt函数用法  2010-03-0510:25:51|  分类: VC学习|举报|字号 订阅      下载LOFTER我的照片书  |(一)BOOLBitBlt(intx,inty,intnWidth,intnHe

    2022年10月19日
    2
  • typescript的泛型_c泛型

    typescript的泛型_c泛型泛型指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定具体类型的一种特性。引入下面创建一个函数,实现功能:根据指定的数量count和数据value,创建一个包

    2022年7月29日
    6
  • hyper-v虚拟机安装xp系统网络不通_hyper-v转换vmware

    hyper-v虚拟机安装xp系统网络不通_hyper-v转换vmware下载一个ISO格式的XP系统镜像,把ISO文件设置为虚拟机的光驱,启动虚拟机,会自动从ISO镜像文件启动,创建虚拟机,创建虚拟磁盘VHD,然后加入启动项。打开本系统的磁盘管理,对虚拟磁盘进行格式化,并设置为活动分区(有一个就行)然后启动虚拟机,给虚拟机安装系统,就可以了。我是启动虚拟机后进入PE,然后选择Ghost32装的。如果启动虚拟机鼠标不能动,就点“

    2022年8月16日
    3
  • 制作PFX证书

    制作PFX证书1、创建根证书密钥文件root.keyC:\Users\lijunlin>opensslgenrsa-des3-outroot.keyGeneratingRSAprivatekey,2048bitlongmodulus…………………………………………………………….+++.+++eis65537(0x10001)Enterpassphraseforroot.k

    2022年6月7日
    45
  • Pluralsight 学习感受

    Pluralsight 学习感受从2019年10月份开始,陆陆续续用了大半年的Pluralsight网站及手机App进行IT学习(MCSA2016,MicrosoftActiveDirectoryetc.),整

    2022年8月2日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号