2016-09-20 4 views
-4

私はウェブサイトCodeChefから問題を解決していました。私のロジックにはループがあります-python

いくつかのプログラミングコンテストの問題は本当に難しいです:彼らは 、あなたが期待している可能性があるものとは異なる出力形式を必要と んが、またサンプル出力が違いを示していないだけでなく、 私はこの質問を見つけました。 の例については、順列を見てみましょう。整数1の置換はこれらの整数の順序である。従って、 を順列で表現する自然な方法は、この順序で整数をリストすることです。 n = 5の場合、 の順列は2,3,4,5,1のように見えますが、 の順列を表す可能性もあります。 のリストを作成します。ここで、i番目の番号は 順列の整数i。この第2の可能性を逆順 と呼ぶことにする。上のシーケンスの逆転置は、5,1,1,235,164,,2,3,4である。あいまいな順列は逆順と区別することができない順列である。例えば、逆順置換が同じであるので、順列1,4,3,2,0 はあいまいである。 このような迷惑なサンプルテストケースを取り除くには、 プログラムを書いて、与えられた順列があいまいであるかどうかを検出する必要があります。

入力仕様

入力にはいくつかのテストケースが含まれています。各テストの最初の行には整数n(1≤n≤100000)が含まれています。そして、次の行には、1からnまでの整数の置換が続きます。連続した整数の間に正確に1つの空白がある。 。 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

、あなたのコードを疑う前に、それをダブルチェックあなたが期待されているものの入力と出力の一致を処理する方法することを勧めします。

正しいアルゴリズムにもかかわらずテストに失敗したときに、not ambiguousの代わりにnon-ambiguousという文字列を使用するようなことがあると、あなたが気づいたときにどのように感じるか分かります。

+0

いいえ、あなたは正しい文「 'non-ambiguous」!=' not ambiguous''を使用しません。 – polku

関連する問題