2016-09-20 124 views
-4

我正在解決網站CodeChef的問題。 我發現這個問題:是否有我的邏輯循環-python

一些編程大賽問題確實棘手:他們不僅 需要從你期望什麼, 不同的輸出格式,而且樣本輸出不示區別。舉個例子,讓我們看看排列組合。將整數1 置換爲n是這些整數的排序。因此,代表 排列的自然方法是按此順序列出整數。當n = 5時, 排列可能看起來像2,3,4,5,1。但是,還有另一個 表示排列的可能性:您創建一個列表 數字,其中第i個數字是整數i在 排列中。讓我們稱這第二種可能性爲 排列。上述序列的逆置換是5,1, 2,3,4。不明確的置換是置換,其不能與其逆置換區分開來。例如,排列1,4,3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,。 爲了擺脫這種煩人的示例測試用例,您必須編寫一個 程序來檢測給定的排列是否不明確。

輸入規格

輸入包含多個測試用例。每個測試 案例的第一行包含一個整數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

+0

不,您不使用正確的句子''非歧義'!='不含糊'。 – polku