在我的逻辑python中有一个循环

时间:2016-09-20 08:41:28

标签: python algorithm

我正在从网站CodeChef解决问题。 我发现了这个问题:

  

一些编程竞赛问题真的很棘手:不仅仅是这些问题   需要与您可能期望的输出格式不同的输出格式,   而且样本输出也没有显示出差异。为   例如,让我们看一下排列。整数的排列1   到n是这些整数的排序。所以自然的表达方式   排列是按此顺序列出整数。 n = 5时,a   排列可能看起来像2,3,4,5,1。但是,还有另一种   表示排列的可能性:您创建一个列表   数字,其中第i个数字是整数i的位置   排列。让我们将这第二种可能性称为逆   排列。上述序列的逆置换是5,1,   一种模糊的排列是一种不可能的排列   区别于其逆置换。置换1,4,3,2   例如是模棱两可的,因为它的逆置换是相同的。   要摆脱这些烦人的样本测试用例,你必须写一个   检测给定排列是否模糊的程序。

     

输入规范

     

输入包含几个测试用例。每个测试的第一行   case包含一个整数n(1≤n≤100000)。然后是一个排列   整数1到n在下一行中跟随。只有一个空间   连续整数之间的字符。你可以假设每一个   1和n之间的整数在排列中恰好出现一次。该   最后一个测试用例后跟零。

     

输出规格

     

对于每个测试用例输出,排列是否模糊不清。   遵守示例输出中显示的格式。

     

示例输入

     

4 1 4 3 2 5 2 3 4 5 1 1 1 0样本输出

     模糊不含糊不清的

我发布了以下python代码,但他们说我的答案是错误的 有人可以帮助我,我逻辑中的错误在哪里?

我的代码在这里:

def main():
    T=int(input())
    result=[]
    while(T!=0):
        list=[]
        list1=[]
        y=0
        value=raw_input().split(' ')
        for x in value:
            list.append(int(x))
        for x in list:
            y+=1
            x=list.index(y)+1
            list1.append(x)
        if(list==list1):
            result.append("ambiguous")
        else:
            result.append("non-ambiguous")
        T=int(input())
    for a in result:
        print a     
main()

2 个答案:

答案 0 :(得分:0)

对于这类事情,在怀疑代码之前,最好仔细检查处理输入和输出的方式是否符合预期。

我知道,当你意识到尽管算法算法正确,但是使用字符串non-ambiguous而不是预期的not ambiguous时,你感觉有多么愚蠢。

答案 1 :(得分:0)

arr = [int(i) for i in raw_input().split()]
if arr[::] == arr[::-1]:
    print 'ambiguous'
else:
    print ' not ambiguous'

https://code.hackerearth.com/e29c82h