【ブルーブリッジ】基礎練習チップテスト


問題の説明は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
構想:良いチップは他のチップをテストするのは正しい結果で、悪いチップはランダムな結果で、良いチップは余分な悪いチップです.また、第i,j位置の意味は、iチップがjチップをテストした結果であり、第j列は他のチップがjをテストした結果であり、j列が良いチップであれば、j列の1の個数は必ず半分以上である.
#include
using namespace std;

int main()
{
	int n,a[20][20],count; // n:    a[20][20]:    count:  1  
	cin>>n;
	for(int i=0;i<n;i++){  //   
		for(int j=0;j<n;j++){
			cin>>a[i][j];
		}
	}
	for(int j=0;j<n;j++){  //   1  
		count = 0;
		for(int i=0;i<n;i++){
			if(a[i][j]==1){
				count++;
			}
		}
		if(count > n/2)  //   1 ,  
		    cout<<j+1<<" ";  //   
	}
	return 0;
}