問題描述
有n(2≤n≤20)塊晶元,有好有壞,已知好晶元比壞晶元多。
每個晶元都能用來測試其他晶元。用好晶元測試其他晶元時,能正確給出被測試晶元是好還是壞。而用壞晶元測試其他晶元時,會隨機給出好或是壞的測試結果(即此結果與被測試晶元實際的好壞無關)。
給出所有晶元的測試結果,問哪些晶元是好晶元。
輸入格式
輸入資料第一行為乙個整數n,表示晶元個數。
第二行到第n+1行為n*n的一張表,每行n個資料。表中的每個資料為0或1,在這n行中的第i行第j列(1≤i, j≤n)的資料表示用第i塊晶元測試第j塊晶元時得到的測試結果,1表示好,0表示壞,i=j時一律為1(並不表示該晶元對本身的測試結果。晶元不能對本身進行測試)。
輸出格式
按從小到大的順序輸出所有好晶元的編號
樣例輸入
31 0 1
0 1 0
1 0 1
樣例輸出
1 3判斷乙個晶元是否好壞的關鍵就是一句話:已知好晶元比壞晶元多------>(sum>n/2)
從兩個角度判斷:
1、如果乙個晶元測試其他晶元的結果,好晶元比壞晶元多,那麼這個晶元可能是好晶元。
2、如果乙個晶元被超過一半的晶元測試結果是好,那麼這個晶元可能是好晶元。
首先篩選掉肯定是壞晶元的晶元,然後記錄每個晶元被測試成好晶元的次數 ,最後判斷哪個晶元的好晶元。
#include#include#include#include#include#includeusing namespace std;
const int n=22;
int main()
if(sum>n/2)//如果這個晶元測試的好晶元比壞晶元多,這個晶元才可能是好晶元,記錄下來
good[k++]=i;
} //假設這些可能的好晶元裡面全是好晶元
int ans[n]=;//記錄第i個晶元被測試成好晶元的次數
for(int i=0;in/2)
cout<}
藍橋杯 基礎練習 晶元測試
基礎練習 晶元測試 時間限制 1.0s 記憶體限制 512.0mb 問題描述 有n 2 n 20 塊晶元,有好有壞,已知好晶元比壞晶元多。每個晶元都能用來測試其他晶元。用好晶元測試其他晶元時,能正確給出被測試晶元是好還是壞。而用壞晶元測試其他晶元時,會隨機給出好或是壞的測試結果 即此結果與被測試晶元...
藍橋杯 基礎練習 晶元測試
問題描述 有n nn 2 n nn 20 塊晶元,有好有壞,已知好晶元比壞晶元多。每個晶元都能用來測試其他晶元。用好晶元測試其他晶元時,能正確給出被測試晶元是好還是壞。而用壞晶元測試其他晶元時,會隨機給出好或是壞的測試結果 即此結果與被測試晶元實際的好壞無關 給出所有晶元的測試結果,問哪些晶元是好晶...
藍橋杯 基礎練習 晶元測試
問題描述 有n 2 n 20 塊晶元,有好有壞,已知好晶元比壞晶元多。每個晶元都能用來測試其他晶元。用好晶元測試其他晶元時,能正確給出被測試晶元是好還是壞。而用壞晶元測試其他晶元時,會隨機給出好或是壞的測試結果 即此結果與被測試晶元實際的好壞無關 給出所有晶元的測試結果,問哪些晶元是好晶元。輸入格式...