藍橋杯 試題 基礎練習 晶元測試(推理)

2021-10-03 14:40:35 字數 1007 閱讀 8868

問題描述

有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 塊晶元,有好有壞,已知好晶元比壞晶元多。每個晶元都能用來測試其他晶元。用好晶元測試其他晶元時,能正確給出被測試晶元是好還是壞。而用壞晶元測試其他晶元時,會隨機給出好或是壞的測試結果 即此結果與被測試晶元實際的好壞無關 給出所有晶元的測試結果,問哪些晶元是好晶元。輸入格式...