1

過去数か月間 Matlab で働いた後、Python に移行しようとしています。これはおそらく簡単な質問ですが、StackOverflow や Google で検索してもまだ見つかりません。

私が取り組んでいる InterviewStreet の問題は非常に単純です。これは挿入ソートの質問で、リスト内で異なる番号を何回切り替える必要があるかを確認します。次の形式で raw_input() が返されます。

2

5

1 1 1 2 2

5

2 1 3 1 2

最初の行は、並べ替える必要があるリストの数です。後続のすべての偶数行は、並べ替える必要があるリスト内の数値の量です。次の奇数行は、並べ替える必要がある実際のリストです。

私は最初に立ち往生しています。私がやった最高のことは

STDOUT = raw_input()

出力 STDOUT

何らかの理由で、すべてのテストケースで最初の整数のみを提供します (この場合は 2 です)。

これはおそらくすでに明らかですが、raw_input() を使用して残りの数値にアクセスするにはどうすればよいでしょうか?

ありがとう!

PS残りの問題については助けないでください。実際に自分で解決したいと思っています:)

4

2 に答える 2

0

raw_input()次のように、各行に対して 1 回呼び出す必要があります。

N = int(raw_input())    # first line is number of lists

for i in xrange(N):
    num_in_list = int(raw_input())  # read the number of items in list N
    list = raw_input().split()      # read list N

    print num_in_list, list         # print list N

以下を出力する必要があります。

5 ['1', '1', '1', '2', '2']
5 ['2', '1', '3', '1', '2']

于 2012-07-28T04:59:38.223 に答える
0

私は同じ問題に取り組んでいましたが、ここに解決策がありますraw_input():

num_testcases = int(raw_input())
assert 1 <= num_testcases <= 5
for testcase in range(num_testcases):
    num_elems = int(raw_input())
    assert 1 <= num_elems <= 100000
    elems = map(int, raw_input().split())
    assert all(map(lambda x: 1 <= x <= 1000000, elems))
    insertion_sort(elems)

それがあなたを助けることを願っています。

于 2012-11-04T21:13:54.590 に答える