我正在从网站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()
答案 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'