首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编码挑战: Kattis

编码挑战: Kattis
EN

Code Review用户
提问于 2019-07-19 13:55:53
回答 1查看 244关注 0票数 2

短问题描述:

如果不存在三个数字a_ia_ja_k --其中a_i先成功a_j,然后又在序列中取代a_k,则数字序列是反标识的--比如a_i - a_j = a_j - a_k。例:(5,0,-1,3,1)不是止痛药,因为5-3 = 3-1,而序列(1,5,3,0,-1)是抗药的。

链接到卡蒂斯页

我的尝试:

代码语言:javascript
复制
import sys

lines = sys.stdin.readlines()
lines = [x[:-1] for x in lines]
for line in lines:
    if len(line) > 1:
        line = line.split(':')
        found = False
        visited = {}
        curr = line[1].split()
        r = len(curr)
        for i in range(r):
            visited_2 = {}
            if curr[i] in visited:
                continue
            else:
                visited[curr[i]] = True
                for j in range(i+1, r):
                    if curr[j] in visited_2:
                        continue
                    else:
                        visited_2[curr[j]] = True
                        tmp = int(curr[i]) - int(curr[j])
                        for k in range(j+1, r):
                            if int(curr[j]) - int(curr[k]) == tmp:
                                print("no")
                                found = True
                                break
        if not found:
            print("yes")
    else:
        break

我相信我的尝试解决了找出一个序列是否是反算术的问题,因为我已经做了我自己的广泛的例子来测试这个问题。到目前为止,我的优化步骤是包括访问过的“节点”的字典,以便不重复搜索我们已经知道的不产生算术序列的数字。然而,这是不够快的卡蒂斯,所以我将非常感谢任何建议,如何改善这一点。

EN

回答 1

Code Review用户

发布于 2019-07-20 07:40:43

使您的代码更难阅读:

  • 缺少文档字符串
  • 缺乏评论
  • 在“破坏性的else:”(通过返回、中断、继续传输执行)之后使用if进行不必要的缩进(在这里,您使用的是空的"if-parts":,您可以否定这些条件,只使用以前的else:-statements。再次问好,缩进。)
票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/224483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档