藍橋杯 基礎訓練 晶片測試
阿新 • • 發佈:2019-01-28
問題描述
有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(並不表示該晶片對本身的測試結果。晶片不能對本身進行測試)。 輸出格式 按從小到大的順序輸出所有好晶片的編號 樣例輸入 3
1 0 1
0 1 0
1 0 1 樣例輸出
每個晶片都能用來測試其他晶片。用好晶片測試其他晶片時,能正確給出被測試晶片是好還是壞。而用壞晶片測試其他晶片時,會隨機給出好或是壞的測試結果(即此結果與被測試晶片實際的好壞無關)。
給出所有晶片的測試結果,問哪些晶片是好晶片。 輸入格式 輸入資料第一行為一個整數n,表示晶片個數。
第二行到第n+1行為n*n的一張表,每行n個數據。表中的每個資料為0或1,在這n行中的第i行第j列(1≤i, j≤n)的資料表示用第i塊晶片測試第j塊晶片時得到的測試結果,1表示好,0表示壞,i=j時一律為1(並不表示該晶片對本身的測試結果。晶片不能對本身進行測試)。 輸出格式 按從小到大的順序輸出所有好晶片的編號 樣例輸入 3
1 0 1
0 1 0
1 0 1 樣例輸出
1 3
思路分析:題目中提示好晶片的數量大於壞晶片的數量,意味著當其他晶片對一個晶片進行測試時,如果該晶片為好晶片,則測試結果為 好的數量>壞的數量,反之如果該晶片為壞晶片,則測試結果為 好的數量<壞的數量。這時只需對錶中i(行)進行列遍歷,根據結果進行判斷。
package Basic; import java.util.Scanner; public class Basic23 { public static void main(String[] args){ Scanner s = new Scanner(System.in); int n = s.nextInt(); int[][] result = new int[n][n];//晶片測試結果result for(int i=0;i<n;i++) for(int j=0;j<n;j++) result[i][j] = s.nextInt(); s.close(); for(int i=0;i<n;i++){ int count = 0;//好的晶片測試數量 for(int j=0;j<n;j++){ if(result[i][j] == 1){ count++; } if(count>n/2){ System.out.print((i+1)+" "); } } } } }