首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定数组是否漂亮

确定数组是否漂亮
EN

Stack Overflow用户
提问于 2017-05-12 17:09:17
回答 2查看 428关注 0票数 0

如果对每一对数字ai,aj,(i≠j)存在ak,使得ak = ai * aj,则数组a称为优美。注意,k也可以等于i或j。找出给定的数组a是否漂亮!

投入:

  1. 输入的第一行包含一个整数T,表示测试用例的数量。测试用例紧随其后。
  2. 每个测试用例的第一行包含表示元素数的整数n。
  3. 下一行包含n个空格分隔的整数,表示数组a。

产出:

  • “是”或“不是”

为什么我会得到一个运行时错误?

代码语言:javascript
复制
T = input()

i = 0

while i < T:

  n = input()
  a = raw_input()

  k = a.split(" ")
  for i in range(n):
      k[i] = int(k[i])
  for i in range(n):
    for j in range(n):
        if i!=j:
            if a[i]*a[j] not in a:
                print "no"
                sys.exit()
print "yes"
i = i + 1

我已经编辑了我的代码,但这也给了我错误的答案。

EN

回答 2

Stack Overflow用户

发布于 2017-05-12 17:40:58

我不知道你会犯什么错误,所以我不能对此发表评论,但你的逻辑似乎是错的。尝试将-20,-15,-4,5作为您的输入。它会说,它是美丽的,当它显然不是。您只检查数组中两个最大元素的乘积是否在数组中。

票数 0
EN

Stack Overflow用户

发布于 2017-05-12 18:24:36

通过查看您的代码,可以知道您误解了问题的某些部分,这是我在阅读了您的问题之后提出的,并且可能有一个更健壮和优化的方法来解决这个问题。

代码语言:javascript
复制
import sys
T = input()
i = 0
while i < T:
    n = int(raw_input())
    a = map(int, raw_input().split(' '))        
    mem = {}
    for j in range(n):
        mem[a[j]] = j
    for k in mem.keys():
        for j in range(mem[k]+1 , n):
            if k*a[j] in mem:
                print "yes"
                sys.exit()
    print "no"
    i+=1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43943101

复制
相关文章

相似问题

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