基礎練習チップテスト

3284 ワード

基礎練習チップテスト
時間制限:1.0 sメモリ制限:512.0 MB
      
問題の説明
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
サンプル出力
1 3
import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        int n,i,j;
        n=sc.nextInt();
        int a[][]=new int[n][n];
        int count[]=new int[n];
        for(i=0;i<n;i++){
            
            count[i]=1;
            for( j=0;j<n;j++)
                a[i][j]=sc.nextInt();
        }
        for(j=0;j<n;j++)
        {
            for(i=0;i<n;i++){
                if(i!=j && (a[i][j]==1))
                    count[j]++;
            }
            if((count[j]>(n/2)) &&(j!=(n-1)))
                System.out.print(j+1+" ");
            else if((count[j]>(n/2))&& (j==(n-1)))
            System.out.println(n);
        }

    }

}