wanting-for 发表于 2020-1-25 18:24:40

def solve_313(list1:list):
    B, i,length,first = ],1,0,0
    while True:
      if list1 == B:
            i+=length         
      elif i+length>=len(list1):
            for a in range(i,len(list1)):
                if list1 == B[:len(list1)-a]:
                  first += 1
                  break
                else:
                  B = list1[:a+1]
            if first == 0:
                return len(list1)
            else:
                return len(B)
      else:
            B,length = list1[:i+1],len(B)
            i += 1
print(solve_313(+*10000))

楼主,我又来了,上次自闭了,这次换了方法,但是效率低,但是都是正确的,输入的数据,正是我这个算法的克星{:9_233:}
输入【1,2,3,4,5】+【1,2,3,4】*10000,大约执行6S,麻烦楼主帮忙测试一下,感谢了!

zltzlt 发表于 2020-1-25 18:30:16

wanting-for 发表于 2020-1-25 18:24
楼主,我又来了,上次自闭了,这次换了方法,但是效率低,但是都是正确的,输入的数据,正是我这个算法的 ...

一开始就错了

输入:
输出:4
预期结果:2

wanting-for 发表于 2020-1-25 18:40:48

zltzlt 发表于 2020-1-25 18:30
一开始就错了

输入:


def solve_313(list1:list):
    B, i,length,first = ],1,0,0
    while True:
      if list1 == B:
            i+=length         
      elif i+length>=len(list1):
            for a in range(i,len(list1)):
                if list1 == B[:len(list1)-a]:
                  first += 1
                  break
                else:
                  B = list1[:a+1]
            if first == len(list1)-i:
                return len(B)
            elif first == 0:
                return len(list1)
            else:
                return len(B)
      else:
            B = list1[:i+1]
            length = len(B)
            i += 1
print(solve_313())
print('测试点1:',solve_313())
print('测试点2:',solve_313())
print('测试点3:',solve_313())
print('曾经错误的:',solve_313())
print('曾经错误的:',solve_313())
print('曾经错误的:',solve_313())
print('曾经错误的:',solve_313(+*10000))
以后我再乱改代码,我先给自己两巴掌{:5_96:}

zltzlt 发表于 2020-1-25 18:55:43

wanting-for 发表于 2020-1-25 18:40
以后我再乱改代码,我先给自己两巴掌

解答错误

输入:
输出:2
预期结果:1

wanting-for 发表于 2020-1-25 19:00:48

zltzlt 发表于 2020-1-25 18:55
解答错误

输入:


def solve_313(list1:list):
    B, i,length,first = ],1,1,0
    while True:
      if list1 == B:
            i+=length         
      elif i+length>=len(list1):
            for a in range(i,len(list1)):
                if list1 == B[:len(list1)-a]:
                  first += 1
                  break
                else:
                  B = list1[:a+1]
            if first == len(list1)-i:
                return len(B)
            elif first == 0:
                return len(list1)
            else:
                return len(B)
      else:
            B = list1[:i+1]
            length = len(B)
            i += 1
print(solve_313())
print('测试点1:',solve_313())
print('测试点2:',solve_313())
print('测试点3:',solve_313())
print('曾经错误的:',solve_313())
print('曾经错误的:',solve_313())
print('曾经错误的:',solve_313())
print('曾经错误的:',solve_313(+*10000))
print(solve_313())

zltzlt 发表于 2020-1-25 19:03:22

wanting-for 发表于 2020-1-25 19:00


会超时哦

wanting-for 发表于 2020-1-25 19:22:48

zltzlt 发表于 2020-1-25 19:03
会超时哦

这个确实会有的,写的方法不怎么好,能通过就很高兴了,谢谢楼主不厌其烦的帮我测试!

zltzlt 发表于 2020-1-25 19:23:38

wanting-for 发表于 2020-1-25 19:22
这个确实会有的,写的方法不怎么好,能通过就很高兴了,谢谢楼主不厌其烦的帮我测试!

不用谢{:5_109:}新年快乐

776667 发表于 2021-4-2 10:54:37

本帖最后由 776667 于 2021-4-2 10:57 编辑

def fun313(x):
    for i in range(1,len(x)):
      if not len(x)%i:
            if x == x[:i]*(len(x)//i):
                return len(x[:i])
      else:
            if x[:len(x)-(len(x)%i)] == x[:i]*(len(x)//i):
                if x == x[:i][:len(x)%i]:
                  return len(x[:i])
    return len(x)
页: 1 2 [3]
查看完整版本: Python:每日一题 313