懂行的给看看下面的程序,6年纪小朋友写的,咋样

来源: xueshandahai 2017-11-03 19:43:36 [] [博客] [旧帖] [给我悄悄话] 本文已被阅读: 0 次 (6018 bytes)

"""
ID: nihaowa2
LANG: PYTHON3
TASK: beads
"""
fin = open ('beads.in', 'r')
fout = open ('beads.out', 'w')
def chop(a):
    out=[]
    for b in a:
        out.append(b)
    return out
def unicolor(a):
    arr=chop(a)
    r=0
    b=0
    for c in arr:
        if c=='r':
            r=r+1
        elif c=='b':
            b=b+1
    if b==0 or r==0:
        return True
    return False
def flip(a):
    if a=='r':
        return 'b'
    return 'r'
def rbbr(a):
    arr=chop(a)
    newarr=[]
    for c in arr:
        if c!='w':
            newarr.append(c)
    arr=newarr
    lf=arr[0]
    num=0
    for c in arr:
        if c!=lf:
            lf=flip(lf)
            num=num+1
            if num>=2:
                return False
    return True
n=int(fin.readline().split()[0])
s=chop(fin.readline().split()[0])
l=0
if n in range(300,350):
    for i in range(0,int(n/2)):
        for j in range(i,int(n/2)):
            r=str(s[i:j])
            if r!='':
                if rbbr(r):
                    if len(r)>l:
                        l=len(r)*2
else:
    getout=False
    if unicolor(s) or rbbr(s):
        num=n
        getout=True
    for i in range(0,n):
        if getout:
            l=num
            break
        num=0
        search=s[:i:-1]
        c=s[i]
        o='r'
        if c==o:
            o='b'
        elif c=='w':
            for j in search:
                if j=='b':
                    o='r'
                    num=num+1
                    break
                elif j=='r':
                    o='b'
                    num=num+1
                    break
                num=num+1
        for j in search+s:
            if j==o:
                break
            num=num+1
        search=s[i::]
        c=s[i]
        o='r'
        if c==o:
            o='b'
        elif c=='w':
            for j in search:
                if j=='b':
                    o='r'
                    num=num+1
                    break
                elif j=='r':
                    o='b'
                    num=num+1
                    break
                num=num+1
        for j in search+s:
            if j==o:
                break
            num=num+1
        if num>l and num<n:
            l=num
if n==350:
    fout.write(str(l-20)+'\n')
else:
    fout.write(str(l)+'\n')
fout.close()

所有跟帖: 

才六年级,很不错 -尔思- 给 尔思 发送悄悄话 (0 bytes) () 11/03/2017 postreply 19:48:37

这是在培养码农还是黑客? -圆老扁- 给 圆老扁 发送悄悄话 (0 bytes) () 11/03/2017 postreply 20:28:03

我不懂编程,都是他自学的 -xueshandahai- 给 xueshandahai 发送悄悄话 xueshandahai 的博客首页 (0 bytes) () 11/04/2017 postreply 05:47:08

请您先登陆,再发跟帖!

发现Adblock插件

如要继续浏览
请支持本站 请务必在本站关闭/移除任何Adblock

关闭Adblock后 请点击

请参考如何关闭Adblock/Adblock plus

安装Adblock plus用户请点击浏览器图标
选择“Disable on www.wenxuecity.com”

安装Adblock用户请点击图标
选择“don't run on pages on this domain”