手机密码-枚举算法

举报
永不言弃 发表于 2022/02/27 15:47:46 2022/02/27
【摘要】 手机密码-枚举算法

1.问题描述
小明六次输入五位数的手机密码均错误,但是每次输入的密码中有三位数字正确,位置都不对。现求小明正确的五位数手机密码?
六次手机密码分别是:60873, 75139, 43985, 97821, 21365,59208
2.问题分析
一共就只有五位数字,所以可以枚举所有的五位数字,直到满足条件时,输出数字。满足的判断条件应该是每次枚举的数字在六次密码中每次都能保证有三位数字相同且位数不一样。
3.代码分析
def panduan(j,a):
   
   z=0
   for m in range(6):
      s=0
      for i in range(5):
         
         for k in range(5):
            if j[i]==a[m][k] and i!=k:
               s+=1
               if s==3:
                  z=z+1
                  
   if z==6:
      return True
   
a=['60873','75139','43985','97821','21365','59208']
for i in range(10000,100000):
   if panduan(str(i),a):        
      print(i)
   else:
      continue

4.输出答案
38752

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。