ブルーブリッジカップチップテスト--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(このチップが自分に対するテスト結果を示さない.コアシートは自分に対してテストできない)である.
出力フォーマット
すべての良いチップの番号を小さい順に出力します.
サンプル入力
3 1 0 1 0 1 0 1 0 1
サンプル出力
1 3
どうして思いついたのはすべて最も愚かな方法で、私は泣きました.の
私の考え:すべての結果を2つのグループに分けて、数の多いグループは正常なチップです.
他の人の考え:テスト結果を列ごとにスキャンし、この列の1つの数が半分を超えると、この列が代表するこのチップが正常であることを示します.
コア:
for(int j=0;jn/2)cout<

私のコードを貼ってください.後で自分が書いたコードがどんなに悪いか見てみましょう.
#include

using namespace std;

int main(){
    int n;
    cin>>n;

    int a[n][n];
    for(int i=0;i>a[i][j];
    int b[n],c[n];
    int bcnt=0,ccnt=0;
    b[bcnt++]=1;

    for(int i=1;iccnt){
        for(int i=0;i