ブルーブリッジカップ基礎練習チップテストPython実現(水題)


問題の説明はn(2≦n≦20)ブロックチップがあり、良いチップと悪いチップがあり、良いチップが悪いチップより多いことが知られている.各チップは他のチップをテストするために使用できます.他のチップをチップでテストすると、テストされたチップが良いか悪いかを正確に与えることができます.一方、悪いチップで他のチップをテストすると、良いか悪いかのテスト結果がランダムに与えられます(すなわち、この結果は被テストチップの実際の良し悪しとは関係ありません).すべてのチップのテスト結果を示し、どのチップが良いチップなのかを尋ねます.入力フォーマット入力データの第1の動作は、チップ個数を表す整数nである.2行目からn+1行目n*nのテーブルで、1行n個のデータが表示されます.表中の各データは0または1であり、このn行のi行目j列目(1≦i,j≦n)のデータは、iブロック目チップでjブロック目チップをテストしたときに得られたテスト結果を示し、1は良い、0は悪い、i=jの場合は一律に1(このチップが自分に対するテスト結果を示さない.コアシートは自分に対してテストできない)である.出力フォーマットは、すべての良いチップの番号付けサンプルを小さい順に出力3 1 0 1 0 1 0 1 0 1 0 1サンプル出力1 3
分析:

タイトルは次のとおりです。


はい、測定しました:1


良い測定:0


悪い測定:1または0


悪い測定:1または0


全体的に良いのは悪いのより大きい。


例えば、もし私たちが100個の測定対象チップを持っていたら、そのうち51個は良い、49個は悪い、私は今良い、残りの50個は良い、50個は1、49個はランダムに0または1を与え、最悪の場合は49個は0を与えた.我々の被験者は,得られた1が半分以上であれば説明できるが,被験チップは良く,このチップの番号を出力すればよいことがわかる.
列ごとに遍歴する

ACコード:

while True:
    try:
        n = int(input())
        s = []
        for i in range(n):
            s.append(input().split())
        for i in range(0,n):
            flag = 0
            for j in range(n):
                if s[j][i] == '1':
                    flag += 1
            if flag >= n/2:
                print(i+1,'',end='')
    except:
        break

プログラミングシロ記録成長