鱼C论坛

 找回密码
 立即注册
查看: 3632|回复: 1

Python最新版课后作业022动动手01提问:摩尔投票法的进阶操作

[复制链接]
发表于 2021-7-5 11:23:34 | 显示全部楼层 |阅读模式
10鱼币
这道题我的思路是第一个超过 1/3 的数出来(我把它标记为major1),然后再重复对抗阶段 碰到major1就跳过,这样就把第二个超过 1/3 的数筛出来了(major2)
代码如下:(我写的作业被版主删掉了,在群里问是因为我作业写错了,我对了下答案只有这里有出入,想问一下我的代码哪里错了)
具体代码如下:
  1. list1 = [1,2,1,1,2,3,2,3]
  2. major = list1[0]
  3. counts = 0
  4. for i in list1:
  5.     if counts == 0:
  6.             major = i
  7.     if i == major:
  8.             counts += 1
  9.     else:
  10.             counts -= 1
  11. if list1.count(major) >= len(list1)/3:
  12.     print('major1=',major)
  13. else:
  14.     print('no')

  15. a = major
  16. major = list1[0]
  17. for i in list1:
  18.     if i == a: #碰到major1就跳过#
  19.         continue
  20.     if counts == 0:
  21.             major = i
  22.     if i == major:
  23.             counts += 1
  24.     else:
  25.             counts -= 1

  26. if list1.count(major) >= len(list1)/3:
  27.     print('major2=',major)
  28. else:
  29.     print('nope')
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-6 18:53:22 | 显示全部楼层
你的代码怎么写的这么乱
两段for循环一模一样,用个函数封装下
把题目发出来给我看下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 06:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表