试题 基础练习 芯片测试(Java)
2021-02-10 22:19
标签:ade 博客 def ber soft 随机 顺序 java scan 时间限制:1.0s 内存限制:512.0MB 有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 1 3 试题 基础练习 芯片测试(Java) 标签:ade 博客 def ber soft 随机 顺序 java scan 原文地址:https://www.cnblogs.com/acm-cyz/p/12740326.html试题 基础练习 芯片测试
资源限制
问题描述
输入格式
输出格式
样例输入
样例输出
代码
?
1 import java.util.Scanner;
2 import java.util.*;
3 ?
4 ?
5 public class Main {
6 static int n,a[][],count[];
7
8 public static void main(String[] args) {
9 Scanner sc = new Scanner(System.in);
10 n = sc.nextInt();
11 a = new int[22][22];
12 count = new int [25];
13 for(int i=1;i){
14 for(int j=1;j){
15 a[i][j] = sc.nextInt();
16 }
17 }
18
19 for(int i=1;i){
20 for(int j=1;j){
21 if(i!=j&&a[i][j]==1)
22 count[j]++;
23 }
24 }
25 for(int j=1;j)
26 if(count[j]>=n/2)
27 System.out.print(j + " ");
28 }
29 ?
30 }
总结
一开始很懵,不知道该怎么做,然后写模拟写了很久,最后还是不会。然后去看了下别的大佬的博客,发现竟然是用抽屉原理,但是不是很懂为什么这里可以这样用。
也就是说,只要1的个数>0的个数,我们就可以认为这个芯片是好的了。好神奇!然后代码就是上面那样了。
文章标题:试题 基础练习 芯片测试(Java)
文章链接:http://soscw.com/index.php/essay/53768.html