チップの試験問題の基本的なトレーニング
リソースの制約
制限時間:メモリ制限が1.0S:512.0メガバイト
問題の説明
既知の良好なダイチップよりも悪い(2≤n≤20)チップ、善と悪は、n個あります。
各チップは他のチップをテストするために使用することができます。ハーシーは、他のチップのテストチップと、右のテストチップが良いか悪いかで与えることができます。しかし、不良チップは他のチップ、ランダム所与の良否試験結果を試験すると(すなわち、結果は実際のテストチップから独立している良いか悪いかです)。
すべてのテスト結果は、チップを与えられて、チップが良いチップが何であるかを尋ねます。
入力形式
最初の行のデータ入力整数n、チップの数。
第二行目からn + 1からn×n個のテーブル、nはデータの各行の挙動。各データテーブルは、J-チップテストチップのi番目のブロックで得られた試験結果を表すn行目j列目(1≤i、j≤n)データは、このi番目の行に、0または1であります1は、I 1 = jが均一である場合に0悪い示し、良好を表す(試験結果は、チップ自体チップ自体をテストすることができないことを示すものではありません)。
出力フォーマット
すべての良いチップの出力数の昇順で
サンプル入力
3
1 0 1
0 1 0
1 0 1
サンプル出力
1 3
分析:タイトルは、自然、半分以上の事実であるが、半分は本当である以上検出されました。すなわち、カラム1は、N / 2よりも大きいです。
Pythonのバージョン
n = int(input())
l, ans = [], []
for _ in range(n):
l.append(list(map(int, input().split())))
for i in range(n):
ans.append(i + 1) if [x[i] for x in l].count(1) > n // 2 else ans
print(*ans)
C ++バージョン
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int a[20][20];
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
for(int i = 0; i < n; i++) {
int cnt = 0;
for(int j = 0; j < n; j++) {
if(j != i)
cnt += a[j][i];
}
if(cnt >= n/2) {
cout << i+1 << " ";
}
}
return 0;
}