ブルーブリッジカップC言語基礎練習チップテスト


タイトルの説明
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(このチップが自身のテスト結果を示すものではない.チップは本体をテストできない)である. 
しゅつりょく
すべての良いチップの番号を小さい順に出力します.
サンプル入力

1  0  1 
0  1  0 
1  0  1 
サンプル出力
1 3
コード#コード#
タイトルの中ですでに良いチップが余分に壊れているチップなので、各チップを順番に他のチップにテストされ、必ず多くのテストが良いか、多くのテストが悪いに違いない.
#include

int a[ 21 ][ 21 ];

 int main()
{
     int n;
     int i , j;
     scanf("%d",&n);
     for(i = 1 ; i <= n ; i ++)
     {
         for(j = 1 ; j <= n ; j++)
         {
             scanf("%d",&a[ i ][ j ]);
         }
     }
     int x=0;
     for(j = 1 ; j <= n ; j ++)
     {
         for(i = 1 ; i <= n ; i ++)
         {
             if(a[ i ][ j ]==1)x ++;
         }
         if(2 * x > n)printf("%d ",j);
         x = 0;
     }
    
     return 0;
}