芯片測試:統計
題目:
本題的考察點是統計的知識。
這樣考慮一下:
對芯片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;
}