zoukankan      html  css  js  c++  java
  • 试题 基础练习 芯片测试(Java)

    试题 基础练习 芯片测试

    资源限制

    时间限制: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

    代码

     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<=n;i++){
    14             for(int j=1;j<=n;j++){
    15                 a[i][j] = sc.nextInt();
    16             }
    17         }
    18             
    19         for(int i=1;i<=n;i++){
    20             for(int j=1;j<=n;j++){
    21                 if(i!=j&&a[i][j]==1)
    22                     count[j]++;
    23             }
    24         }
    25         for(int j=1;j<=n;j++)
    26             if(count[j]>=n/2)
    27                 System.out.print(j + " ");
    28     }
    29 30 }

    总结

    一开始很懵,不知道该怎么做,然后写模拟写了很久,最后还是不会。然后去看了下别的大佬的博客,发现竟然是用抽屉原理,但是不是很懂为什么这里可以这样用。

    也就是说,只要1的个数>0的个数,我们就可以认为这个芯片是好的了。好神奇!然后代码就是上面那样了。



  • 相关阅读:
    vue2.0 移动端,下拉刷新,上拉加载更多 封装组件
    Mac 安装RN android开发环境
    JavaScript 复杂判断的更优雅写法
    JSBridge的原理及使用
    FlatList列表组件的使用
    React Native ScrollView中TextInput焦点问题
    pod update报错(Cocoapods: Failed to connect to GitHub to update the CocoaPods/Specs specs repo)报错解决方案
    如何在pc端通过adb连接手机调试,不用usb数据线
    react学习之搭建后台管理系统
    node+koa2+axios踩坑记
  • 原文地址:https://www.cnblogs.com/acm-cyz/p/12740326.html
Copyright © 2011-2022 走看看