芯片测试:统计
题目:
本题的考察点是统计的知识。
这样考虑一下:
对芯片A,如果它是“好的”,一方面,所有坏的芯片对A的检测结果好坏各占50%,另一方面,所有好的芯片对A的检测结果都是“好的”,题意一开始也说了,芯片有好有坏,并且好芯片比坏芯片多,那么综合起来,A被检测的结果是“好的”的概率>=50%
对芯片A,如果它是“坏的”,一方面,所有坏的芯片对A的检测结果好坏各占50%,另一方面,所有好的芯片对A的检测结果都是“坏的”,综合起来,A被检测的结果是“好的”的概率<50%
经过上面的分析,就很容易判断一块芯片的好坏了,实际上就是看是否有至少半数的芯片(不包括被测试的芯片)对被测试的芯片的测试结果是“好的”,是,它就是“好的”,否则,它就是“坏的”。
代码:
#include<bits/stdc++.h>
using namespace std;
const int MAX = 20+2;
int n, f;
int t[MAX][MAX], ans[MAX];
int main(){
cin>> n;
f = (n-1)/2;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
scanf("%d", &t[i][j]);
}
}
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(i!=j && t[i][j]) ans[j]++;
}
}
for(int i=0; i<n; i++){
if(ans[i]>=f) printf("%d ", i+1);
}
return 0;
}