鱼C论坛

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

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

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

a = major
major = list1[0]
for i in list1:
    if i == a: #碰到major1就跳过#
        continue
    if counts == 0:
            major = i
    if i == major:
            counts += 1
    else:
            counts -= 1

if list1.count(major) >= len(list1)/3:
    print('major2=',major)
else:
    print('nope')

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-6 18:53:22 | 显示全部楼层
你的代码怎么写的这么乱
两段for循环一模一样,用个函数封装下
把题目发出来给我看下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-8 04:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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